我是Struts的新手并继承了一个问题。我试图将JSP中相同表格单元格中包含的3个值传递给我的ActionForm类。第一个值(以及JSP中的其他值)工作正常,但由于某种原因,其他两个值没有。我有适当的getter和setter,但只有第一个(newrecnum)出现,另外两个为null。仅传递第一个值是否有限制?或者还有其他错误吗?这是JSP代码:
<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代码。谢谢!
答案 0 :(得分:2)
首先让我感到震惊的是你在选择字段上有disabled="true"
这一事实。提交表单时,任何已禁用的输入都不会发送到服务器。请求中没有参数意味着Struts在ActionForm实例中没有任何绑定(因此属性将保持不变,在您的情况下为null)。
关于其他字段,请检查您是否确实正确定义了getter和setter(它们是公开的,名称是否完全匹配)。它应该是这样的(为了简单起见,我将使用String类型):
public void setNewrectime(String val) {...}
public String getNewrectime() {...}
public void setNewreccode(String val) {...}
public String getNewreccode() {...}
既然你说你继承了这个东西,你确定Struts将表单参数绑定到你的ActionForm实例,或者它是手工完成的,你必须将代码添加到一些执行此操作的方法中(我问因为多年来我看到Struts应用程序被滥用到最大限度。