在 JSP 中,只有
Boolean
值未绑定到操作的 Boolean
变量中。其他所有变量都绑定得很好。
xBudgetFlag
是 Boolean
变量,不具有约束力。
其他所有变量均具有约束力。
早期从 Action 到 JSP 也不起作用,在为
xBudgetFlag
添加多个 getter 之后,它工作正常。
@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>
尝试使用其他设置器名称
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>