从JSP开始,只有布尔值没有绑定到action的布尔变量中。其他所有变量都得到了很好的绑定。
xBudgetFlag
是布尔变量,它不绑定。其他所有变量都是绑定的。
从早期的行动到jsp也没有奏效,为xBudgetFlag
添加多个吸气剂后,其工作正常。有人请帮助我。
@Component
@Scope(value = "request")
public class PaActions extends ActionSupport {
private static final long serialVersionUID = 1L;
.
.
.
private Long keyId;
private String taxUnit;
private Long surveyTypeId;
private String surveyType;
private Long accountId;
private String status;
private Boolean parentFlag;
private Boolean xBudgetFlag;
// all setter getter are here
// Tried with different ways of getter method thinking isxBudgetFlag() is working, but still all three getters are threre in action class
public Boolean getxBudgetFlag() {
return xBudgetFlag;
}
public Boolean isXBudgetFlag() {
return xBudgetFlag;
}
public Boolean isxBudgetFlag() {
return xBudgetFlag;
}
public void setxBudgetFlag(Boolean xBudgetFlag) {
this.xBudgetFlag = xBudgetFlag;
}
@Transactional(readOnly = false, propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
public String save() {
.
.
.
System.out.println("----------isxBudget --"+isxBudgetFlag()); // printing null
System.out.println("---------- isXbudget --"+isXBudgetFlag()); // printing null
System.out.println("---------- GET XBUDGET --"+getxBudgetFlag()); // printing null
System.out.println("---------- xBudgetFlag --"+xBudgetFlag); // printing null
.
.
.
return SUCCESS;
}
}
在JSP pa-edit.jsp
中<s:form id="PaActions" action="pa-submit" validate="true">
<s:token />
<s:hidden name="keyId" id="keyId"/>
.
.
.
<tr>
<td class="formLabel"><label for="xBudgetFlag">X-Budget Flag</label></td>
<td><s:checkbox property="xBudgetFlag" name="xBudgetFlag" /></td>
</tr>
.
.
.
<s:submit property="save" value="Save" id="save" />
</s:form>
struts.xml中
<action name="pa-submit" class="/PaActions" method="save">
<result name="success" type="redirectAction">
<param name="actionName">pa-display</param>
<param name="key">${keyId}</param>
</result>
<result name="input" type="tiles">.pa.edit</result>
<result name="invalid.token" type="tiles">.pa.edit</result>
</action>
tiles.xml
<definition name=".pa.edit" >
<put-attribute name="title" value="Project KKK" />
<put-attribute name="body" value="/pages/pa-edit.jsp" />
<put-attribute name="parentMenu" value="pa" cascade="true" />
</definition>
如果需要,请告诉我更多信息。
答案 0 :(得分:1)
尝试使用其他设置者名称
public void setXBudgetFlag(Boolean xBudgetFlag) {
this.xBudgetFlag = xBudgetFlag;
}
提交表单时,调用setter方法从http参数映射填充操作类变量。确定正确的setter方法来设置值,它取决于Struts / OGNL的版本来查找和调用对应于属性访问者的名称。
由于您的属性名称首先是一个小写字母,因此不会大写来计算setter方法的名称,但在旧版本中算法不同,因此您必须要么添加对应的setter方法Struts / OGNL的版本或重命名该属性,首先至少有两个小写字母。
property
标记上也不存在<s:checkbox>
属性,请使用name
属性。
所以改变
<td><s:checkbox property="xBudgetFlag" name="xBudgetFlag" /></td>
到
<td><s:checkbox name="xBudgetFlag" /></td>
答案 1 :(得分:0)
Roman C,你真的很棒..它适用于setXBudgetFlag(布尔值xBudgetFlat),大写字母X ..我仍然想知道为什么它不适用于由eclipse生成的setxBudgetFlag ..(小x) ..无论如何..谢谢Roman C