2010-03-31 88 views
0

我是Struts的新手,并且继承了一个问题。我试图将包含在同一个表单元格中的3个值从JSP传递给我的ActionForm类。第一个值(和JSP中的其他值)可以正常工作,但由于某种原因,其他两个值不会。我有适当的getter和setter,但只有第一个(newrecnum)出现,另外两个是空的。是否有限制只传递第一个值?或者还有其他问题吗?这里是JSP代码:无法将JSP值传递给ActionForm(Struts)

<td> 
<html:text size="10" maxlength="10" property="newrecnum"/><br> 
<html:text size="5" maxlength="5" property="newrectime"/> 
<html:select property="newreccode" disabled="true"> 
    <html:option value="YES">YES</html:option> 
    <html:option value="NO">NO</html:option></html:select> 
</td> 

如果需要,我也可以包含ActionForm代码。谢谢!

回答

2

第一件让我感到震惊的事实是,您在选择字段上有disabled="true"。提交表单时,禁用的任何输入都不会发送到服务器。请求中没有参数意味着Struts在ActionForm实例中没有任何东西要绑定(所以属性将保持不变,在你的情况下为null)。

关于其他领域,请检查您是否真正定义了获取者和设置者(是否公开,名称完全匹配)。它应该是这样的(我用String类型去为简单起见):

public void setNewrectime(String val) {...} 
public String getNewrectime() {...} 

public void setNewreccode(String val) {...} 
public String getNewreccode() {...} 

既然你说你继承了这个东西,你肯定是Struts的确实的形式参数绑定到你的ActionForm实例或是手工完成的,你必须将代码添加到某些方法中(我在问,因为多年来我看到Struts应用程序被滥用)。

+0

谢谢你的回应dpb。我发现了这个错误。在另一个字段中输入某个值后,禁用字段实际上会更改为“false”,所以这不是问题。 这是一个setters名称不正确匹配的情况。我发誓我昨天检查了这一百万次。我想我只是需要一点点时间才能看到它。再次感谢! – tacotime 2010-04-01 13:36:54