ssh--表单提交action bean只有一个属性有值

可能有的小伙伴们就遇到了这种问题, 表单提交到action对象中, 进行注入时, 发现只有一个属性有值, 有细心的小伙伴们就发现了每一个表单属性(也就是input标签,要注入到哪个bean中)就会重新创建一个对象, 导致最后一个bean里面只有最后一个表单属性传过来的值, 这个问题我一直以为是框架问题, 后面发现是有个方法没写 导致出现这种问题.代码如下: 

jsp中有一个表单: 提交到action的login方法中;

<form action="user!login">
    <table width="100%">
	    <tr>
	        <th>
			    用户名
		    </th>
		    <td>
			    <input size="10" maxlength="20" name="user.usrName" />
		    </td>
		</tr>
		<tr>
			<th>
				密码
			</th>
			<td>
		    	<input type="password" size="10" maxlength="20" name="user.usrPassword" />
			</td>
		</tr>
		<tr>
		    <td>
		    	&nbsp;
			</td>
			<td>
                <input type="submit"/>
			</td>
		</tr>
    </table>
</form>

action中login方法如下:

private SysUser user;
	
public String login(){
	System.out.println(user);
}

public void setUser(SysUser user) {
	this.user = user;
}

有发现什么吗? 有的小伙伴跟这个action是不是如出一辙呢, 请继续往下看

action.xml配置: 

	<package name="p1" namespace="/" extends="struts-default">
        //这个ua引用的是spring主配置文件(applicationContext.xml)中的bean对象,指向action类
		<action name="user" class="ua">
			<result>/index.jsp</result>
		</action>
	</package>

然后在jsp页面登录运行, 就出现了bean对象只有一个值,其余属性值都为null, 这是什么原因呢? 其实只需要加个方法就能完美解决.

只需要在action中加个get方法就可以完美解决

​
private SysUser user;
	
public String login(){
	System.out.println(user);
}

public void setUser(SysUser user) {
	this.user = user;
}

public SysUser getUser() {
	return user;
}

​

登录运行 打印出:

SysUser [usrFlag=null, usrId=null, usrName=fdsa, usrPassword=vcxz, usrRoleId=null]

因为只提交了用户名跟密码所有只有这两个有值

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值