Action中的方法不被执行

黑土墨 2012-12-06 11:42:32
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方法不被执行?其他方法可以执行。
...全文
443 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
黑土墨 2012-12-13
  • 打赏
  • 举报
回复
终于解决了,是struts的jar包问题。不要使用struts 1.2,用1.3就没问题了。
「已注销」 2012-12-12
  • 打赏
  • 举报
回复
UserForm类里面的第2、3个属性不应该是File类型,而应该是FormFile类型。
黑土墨 2012-12-12
  • 打赏
  • 举报
回复
引用 15 楼 lvbang_lzt 的回复:
直接访问jsp点击提交可以进入add方法,你还是看看你的配置是不是哪里有问题,不行就debug一下看看具体代码怎么走的
配置没有问题。 把 enctype="multipart/form-data"请选择上传的流程文件:<input type="file" name="processDefinition" /> <br> 请选择上传的流程图片:<input type="file" name="processImage" /> 去掉,直接点击上传就可以执行add方法了。为什么?
soyestrellafortuna 2012-12-12
  • 打赏
  • 举报
回复
引用 20 楼 zongzhankui 的回复:
引用 19 楼 soyestrellafortuna 的回复:enctype="multipart/form-data" 记得这种form提交后台是获取不到的 那应该怎么提交?不过我的另外一个程序就可以啊
参考一下这个http://wj196.iteye.com/blog/1628465 或者http://www.cnblogs.com/kenkofox/archive/2011/03/26/1996258.html
黑土墨 2012-12-12
  • 打赏
  • 举报
回复
引用 19 楼 soyestrellafortuna 的回复:
enctype="multipart/form-data" 记得这种form提交后台是获取不到的
那应该怎么提交?不过我的另外一个程序就可以啊
soyestrellafortuna 2012-12-12
  • 打赏
  • 举报
回复
enctype="multipart/form-data" 记得这种form提交后台是获取不到的
黑土墨 2012-12-12
  • 打赏
  • 举报
回复
引用 17 楼 camus213 的回复:
UserForm类里面的第2、3个属性不应该是File类型,而应该是FormFile类型。
我的就是FormFile。
lzh_me 2012-12-07
  • 打赏
  • 举报
回复
直接访问jsp点击提交可以进入add方法,你还是看看你的配置是不是哪里有问题,不行就debug一下看看具体代码怎么走的
lzh_me 2012-12-07
  • 打赏
  • 举报
回复
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方法。 测试完毕。
-tomcat- 2012-12-07
  • 打赏
  • 举报
回复
页面中的action的url和action类中的方法名不一样啊 你修改成一样的试试
lzh_me 2012-12-07
  • 打赏
  • 举报
回复
引用 9 楼 baininghan 的回复:
引用 6 楼 zongzhankui 的回复:引用 5 楼 lvbang_lzt 的回复:去掉隐藏域,这样workflow.do?method=add这样提交下看看, 还是不行 1.如果你这么调用的话 Java code?1workflow.do?method=add 2.后台就需要这么得到 Java code?123456789101112131415161……
  • 打赏
  • 举报
回复
引用 10 楼 zongzhankui 的回复:
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上传文件并传递参数如何做吧、
黑土墨 2012-12-06
  • 打赏
  • 举报
回复

			<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>
enctype="multipart/form-data"请选择上传的流程文件:<input type="file" name="processDefinition" /> <br> 请选择上传的流程图片:<input type="file" name="processImage" /> 去掉就可以执行add方法了。为什么???
老白分享 2012-12-06
  • 打赏
  • 举报
回复
引用 6 楼 zongzhankui 的回复:
引用 5 楼 lvbang_lzt 的回复:去掉隐藏域,这样workflow.do?method=add这样提交下看看, 还是不行
1.如果你这么调用的话
workflow.do?method=add
2.后台就需要这么得到

public ActionForward execute(ActionMapping mapping, ActionForm form,
        HttpServletRequest request, HttpServletResponse response)
        throws Exception {
String action = request.getParament("method");
if(action.equals("add")){
			actionForward = this.add(mapping, form,
                        request, response);
		}
}
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");
}
cowmich 2012-12-06
  • 打赏
  • 举报
回复
/workflow.do?method=add试试
rock_002 2012-12-06
  • 打赏
  • 举报
回复
根本么调用哪个add方法
黑土墨 2012-12-06
  • 打赏
  • 举报
回复
引用 5 楼 lvbang_lzt 的回复:
去掉隐藏域,这样workflow.do?method=add这样提交下看看,
还是不行
lzh_me 2012-12-06
  • 打赏
  • 举报
回复
去掉隐藏域,这样workflow.do?method=add这样提交下看看,
黑土墨 2012-12-06
  • 打赏
  • 举报
回复
引用 3 楼 scottxzj 的回复:
没看到 struts 有调用add方法呀?

<form action="workflow.do" method="post"
    enctype="multipart/form-data">
    <input type="hidden" name="method" value="add">
隐藏域中设置了method,它不应该是执行add方法吗?
snow-is-my-Love 2012-12-06
  • 打赏
  • 举报
回复
没看到 struts 有调用add方法呀?
加载更多回复(2)

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧