日期:2014-05-19  浏览次数:20697 次

Action中的方法不被执行
index.jsp

<form action="workflow.do" method="post"
enctype="multipart/form-data">
<input type="hidden" name="method" value="add">
<TABLE class="tableEdit" border="0" cellspacing="1" cellpadding="0"
style="width: 580px;">
<TBODY>
<TR>
<!-- 这里是添加、编辑界面的标题 -->
<td align="center" class="tdEditTitle">
添加或更新流程信息
</TD>
</TR>
<TR>
<td>
<!-- 主输入域开始 -->
请选择上传的流程文件:
<input type="file" name="processDefinition" />
<br>
请选择上传的流程图片:
<input type="file" name="processImage" />
<br>
<input type="submit" name="submit" value="上传" />

<!-- 主输入域结束 -->
</td>
</TR>
</TBODY>
</TABLE>
</form>

WorkflowAction.java

public ActionForward add(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
System.err.println("hello");
WorkflowActionForm waf = (WorkflowActionForm) form;
workflowManager.deployProcessDefinition(waf.getProcessDefinition()
.getFileData(), waf.getProcessImage().getFileData());
return mapping.findForward("add_success");
}

为什么WorkflowAction.java中的add方法不被执行?其他方法可以执行。
------解决方案--------------------
去掉隐藏域,这样workflow.do?method=add这样提交下看看,


------解决方案--------------------
引用:
XML/HTML code
?



123456789101112131415161718192021222324252627282930

<form action="workflow.do" method="post"    <SPAN style="COLOR: #ff0000">enctype="multipart/form-data"</SPAN>>     <input……


因为你让表单提交是按二进制流来提交的、楼主可以查查资料表单的enctype有三种方式来交互

enctype="multipart/form-data"

如果你表单若要带这个参数 且还要带自己设定的参数的话  是需要分离出来的、

不过struts1没用过、自己动手搜索下struts1上传文件并传递参数如何做吧、


------解决方案--------------------
Action

public class UserAction extends DispatchAction {


/**
 * 测试
 * @param mapping
 * @param form
 * @param request
 * @param response
 * @return
 */
public ActionForward add(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
System.out.println("增加");

return mapping.findForward("success");
}

}


Form

public class UserForm {
private String fileName;
private File processDefinition;
private File processImage;

public String getFileName() {
return fileName;
}

public void setFileName(String fileName) {