Struts2框架中action无法获取到jsp页面传递的表单数据的解决办法

最近照着书上的例子写了个小程序,通过Struts2提供的表单标签编写用户注册表单,并将注册信息输出到另一个jsp页面中。但是却一直出错,表单中的属性无法传递到action中的属性中,从action传递到结果页面的数据全部是空的。


下面是index.jsp中的关键代码:

<h2>用户注册</h2>
	<s:form action="userAction" method="post">
		<s:textfield name="name" label="用户名" required="true" requiredposition="left"></s:textfield>
		<s:password name="password" label="密码" required="true" requiredposition="left"></s:password>
		<s:radio name="sex" list="#{1:'男',0:'女' }" label="性别" required="true" requiredposition="left"></s:radio>
		<s:select list="{'请选择省份','吉林','山东','广东','河南'}" name="province" label="省份"></s:select>
		<s:checkboxlist list="{'足球','羽毛球','乒乓球','篮球'}" name="hobby" label="爱好"></s:checkboxlist>
		<s:textarea name="description" cols="30" rows="5" label="描述"></s:textarea>
		<s:submit value="注册"></s:submit>
		<s:reset value="重置"></s:reset>
	</s:form>


UserAction.java中的代码如下:

package com.wh.action;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends	ActionSupport{
	private static final long serialVersionUID = 1L;
	
	private String name;
	private String password;
	private String description;
	private int sex;
	private String province;
	private String[] hobby;
	
	public String getName(){
		return name;
	}
	public void setName(String name){
		this.name = name;
	}
	public String getPassword(){
		return password;
	}
	public void setPassword(String password){
		this.password = password;
	}
	public String getDescription(){
		return description;
	}
	public void setDescription(String description){
		this.description = description;
	}
	public int getSex(){
		return sex;
	}
	public void setSex(int sex){
		this.sex = sex;
	}
	public String getProvince(){
		return province;
	}
	public void setProvince(String province){
		this.province = province;
	}
	public String[] getHobby(){
		return hobby;
	}
	public void setHobby(String[] hobby){
		this.hobby = hobby;
	}
	public String execute() throws Exception{
			return "success";	
	}
}


struts.xml文件关键部分如下:

<package name="myPackage" extends="struts-default">
		<!-- 定义action -->
		<action name="userAction" class="com.wh.action.UserAction">
				<result name="success">success.jsp</result>
				<result name="error">error.jsp</result>
		</action>
	</package>

结果输出页面success.jsp页面关键部分如下:

<div>
		<h2>用户注册信息</h2>
		<ul>
			<li>用户名:<s:property value="name" /></li>
			<li>密  码:<s:property value="password" /></li>
			<li>性  别:<s:if test="sex==0">女</s:if><s:else>男</s:else></li>
			<li>省  份:<s:property value="province" /></li>
			<li>爱  好:<s:property value="hobby" /></li>
			<li>描  述:<s:property value="description" /></li>
		</ul>
	</div>

以上是程序的主体部分,经过一遍遍的检查,确认没有任何错误。为了找到解决办法,还特意在action中使用了request来获取、声明各种属性值,结果仍然不尽人意。


纠结了好久之后想到,会不会是web.xml里面的问题呢?于是把自己的配置文件和例子中给的web.xml比对了一下,果然发现了不同。

下面是我的web.xml文件的文件头和例程的web.xml的文件头的比对:

<web-app version="2.5" xmlns:javaee="http://java.sun.com/xml/ns/javaee" 
	xmlns:xml="http://www.w3.org/XML/1998/namespace" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd ">
<pre name="code" class="xml"><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">

经过对比发现,我的web.xml文件中少了个xmlns:web的属性,且xmlns:javaee属性在例程中对应的是xmlns。那么究竟是哪错了呢?

非常幸运在第一次的尝试中就找到了关键。在把xmlns:javaee改成xmlns后,程序就可以得到正常的结果了。
遗憾的是经过一番百度之后我没有找到关于此属性的解释,在官网也没有找到相关的信息。可能是我找的不够仔细,希望看到这篇博客的朋友如果有所了解的话能留下您的评论,万分感激。

 




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值