2017-05-27 91 views
0

从JSP中,只有布尔值没有绑定到action的布尔变量其他所有变量都绑定正确。 xBudgetFlag是不绑定的布尔变量..其他所有变量都是绑定的。 从行动到jsp的早些时候也没有工作,后添加多个获得者为xBudgetFlag其工作正常。有人会在这方面帮助我。提交表单后,Struts2 action的布尔值不与JSP绑定

@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

版本的Struts/OGNL? –

+0

对不起,迟到的回应,版本的struts是2.3.16.3 – user3682520

回答

0

罗马C,你是真的真棒。它与setXBudgetFlag(布尔xBudgetFlat),大写字母X的工作..不过我不知道为什么它没有与setxBudgetFlag(小x)这是由eclipse生成..无论..谢谢罗马C

0

尝试使用其他二传手名

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> 
+0

你真的很棒..它使用setXBudgetFlag(Boolean xBudgetFlat)...我仍然想知道为什么它没有与setxBudgetFlag(小x) eclipse ..无论如何..谢谢 – user3682520

+0

与Struts 2.3.16一起使用的OGNL版本有一个传统算法来确定一个方法存取器,就像我在这个答案中提到的那样。你可以从[this](https://stackoverflow.com/a/28110630/573032)回答,以了解更多关于房产访问者的信息。 –