为什么第一次提交表单的时候获取不到action的某些值,而第二次就可以获得。
比如
<form action="xx.action" method="post">
<input type="text" name="user.name" />
<input type="text" name="user.pwd" />
<input type="hidden" name="query" value="zz" />
<input type="submit" value="submit" />
</form>在action有user的getter,setter。
第一次提交后action中user为空,而query能够获得到zz。但是后退再次提交后user可以获到值,query也可以。这是什么原因?谢谢。
比如
<form action="xx.action" method="post">
<input type="text" name="user.name" />
<input type="text" name="user.pwd" />
<input type="hidden" name="query" value="zz" />
<input type="submit" value="submit" />
</form>在action有user的getter,setter。
第一次提交后action中user为空,而query能够获得到zz。但是后退再次提交后user可以获到值,query也可以。这是什么原因?谢谢。
解决方案 »
- js checkbox 删除问题
- 连接Oracle数据库的问题 org.apache.commons.dbcp.SQLNestedException
- 'MyTest' 未定义
- 通过jsp调用srvlet问题!!!急,
- 请高手帮忙解决有关jsp标记的问题。
- 判断javascript怎么写写入的时候都是数字
- CSDN论坛助手 重出江湖!!!!爽!爽!!爽!!知道什么是极速吗?快来体验一下了。[周一早8:00发布]
- 请教iplanet的中文乱码问题!急急急!
- jsp文件怎么调试?
- mybatis中association和collection里的resultMap大家一般怎么写?
- 关于视频文件缓存的问题
- 怎么解决radio 在同一个页面中name相同的,最多只有1个能被选中
测试时间:2012年6月10日
页面: paramBundle.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Parameters Bundling</title>
</head>
<body>
<h1>Parameters Bundling</h1> <br>
<s:form action="paramBundle" name="form1" method="post" id="1">
<s:textfield name="user.name" label="username"></s:textfield>
<s:textfield name="user.pass" label="password"></s:textfield>
<s:submit name="submit" type="submit" value="submit"></s:submit>
</s:form>
</body>
</html>
struts.xml
<action name="paramBundle" class="com.cnuninet.food.action.ParamBundleAction" >
<result name="input">/parambundle.jsp</result>
<result name="success">/parambundleres.jsp</result>
</action>
ParamBundleAction.java类
package com.cnuninet.food.action;import com.cnuninet.food.model.User;
import com.opensymphony.xwork2.ActionSupport;public class ParamBundleAction extends ActionSupport { private static final long serialVersionUID = 1L;
private User user; public User getUser() {
System.out.println(" ParamBundleAction.getUser() is calling.");
return user;
} public void setUser(User user) {
System.out.println(" ParamBundleAction.setUser() is calling.");
this.user = user;
} public String execute() throws Exception {
return SUCCESS;
}
}User.java类
package com.cnuninet.food.model;public class User {
private String name;
private String pass; public String getName() {
System.out.println(" User.getName() is calling.");
return name;
} public void setName(String name) {
System.out.println(" User.setName() is calling.");
this.name = name;
} public String getPass() {
System.out.println(" User.getPass() is calling.");
return pass;
} public void setPass(String pass) {
System.out.println(" User.setPass() is calling.");
this.pass = pass;
}
}页面: paramBundleRes.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Parameters Bundling</title>
</head>
<body>
<h1>Parameters testing for Bundling to Action</h1> <br>
<h2><label>username:</label>${user.name}</h2>
<h2><label>password:</label>${user.pass}</h2>
</body>
</html>
执行流程:
Step1. ParamBundleAction.getUser() is calling. Step2. ParamBundleAction.setUser() is calling.
Step3. User.setName() is calling.
Step4. ParamBundleAction.getUser() is calling.
Step5. User.setPass() is calling. Step6. ParamBundleAction.getUser() is calling.
Step7. User.getName() is calling.
Step8. ParamBundleAction.getUser() is calling.
Step9. User.getPass() is calling.
基于你的问题,完整代码实现为什么第一次提交表单的时候获取不到action的某些值,而第二次就可以获得。
比如
<form action="xx.action" method="post">
<input type="text" name="user.name" />
<input type="text" name="user.pwd" />
<input type="hidden" name="query" value="zz" />
<input type="submit" value="submit" />
</form>完整代码如下:页面: paramBundle.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Parameters Bundling</title>
</head>
<body>
<h1>Parameters Bundling</h1> <br>
<s:form action="paramBundle" name="form1" method="post" id="1">
<s:textfield name="user.name" label="username"></s:textfield>
<s:textfield name="user.pass" label="password"></s:textfield>
<s:textfield name="query" label="query"></s:textfield>
<s:submit name="submit" type="submit" value="submit"></s:submit>
</s:form>
</body>
</html>
struts.xml
<action name="paramBundle" class="com.cnuninet.food.action.ParamBundleAction" >
<result name="input">/parambundle.jsp</result>
<result name="success">/parambundleres.jsp</result>
</action>
ParamBundleAction.java类
package com.cnuninet.food.action;import com.cnuninet.food.model.User;
import com.opensymphony.xwork2.ActionSupport;public class ParamBundleAction extends ActionSupport { private static final long serialVersionUID = 1L;
private User user;
private String query; public String getQuery() {
return query;
} public void setQuery(String query) {
this.query = query;
} public User getUser() {
System.out.println(" ParamBundleAction.getUser() is calling.");
return user;
} public void setUser(User user) {
System.out.println(" ParamBundleAction.setUser() is calling.");
this.user = user;
} public String execute() throws Exception {
return SUCCESS;
}
}
User.java类
package com.cnuninet.food.model;public class User {
private String name;
private String pass; public String getName() {
System.out.println(" User.getName() is calling.");
return name;
} public void setName(String name) {
System.out.println(" User.setName() is calling.");
this.name = name;
} public String getPass() {
System.out.println(" User.getPass() is calling.");
return pass;
} public void setPass(String pass) {
System.out.println(" User.setPass() is calling.");
this.pass = pass;
}
}
页面: paramBundleRes.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Parameters Bundling</title>
</head>
<body>
<h1>Parameters testing for Bundling to Action</h1> <br>
<h2><label>username:</label>${user.name}</h2>
<h2><label>password:</label>${user.pass}</h2>
<h2><label>password:</label>${query}</h2>
</body>
</html>
<input type="text" name="user.name" />
<input type="text" name="user.pwd" />
private String name;
private String pass;
你把那个请求数据拦截到,看下。firefox 就行,看下post 的数据到底是什么样子