首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

Action中的步骤不被执行

2013-01-01 
Action中的方法不被执行index.jspform actionworkflow.do methodpostenctypemultipart/form-data

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) {
this.fileName = fileName;
}

public File getProcessDefinition() {


return processDefinition;
}

public void setProcessDefinition(File processDefinition) {
this.processDefinition = processDefinition;
}

public File getProcessImage() {
return processImage;
}

public void setProcessImage(File processImage) {
this.processImage = processImage;
}

}



web.xml

 <!-- Action Servlet Configuration -->

 <servlet>

    <servlet-name>action</servlet-name>

    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

    <init-param>

      <param-name>config</param-name>

      <param-value>/WEB-INF/struts-config.xml</param-value>

    </init-param>

    <load-on-startup>1</load-on-startup>

 </servlet>

 <!-- Action Servlet Mapping -->

 <servlet-mapping>

    <servlet-name>action</servlet-name>

    <url-pattern>*.do</url-pattern>

 </servlet-mapping>


struts-config.xml
顺便说句,上面有的说?method=add访问不到,这里说明下
parameter="method" 这里指定了我要访问的标识,所以method=add就会去找add方法,这可以随便改

<struts-config>

<form-beans>
<form-bean name="UserForm" type="com.lzt.struts.form.user.UserForm" />
</form-beans>

<action-mappings>
<action path="/userAction" type="com.lzt.struts.action.UserAction"
name="UserForm" scope="request" validate="false" parameter="method">
<forward name="success" path="/user/success.jsp" />
</action>
</action-mappings>

</struts-config>


jsp
Form里面的属性类型要对应好

<body>
<form action="userAction.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>
</body>


我的访问链接:http://localhost:8080/Struts1Test/userAction.do

结果可以访问到 add方法。

测试完毕。

热点排行