2017-05-27 92 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)回答,以瞭解更多關於房產訪問者的信息。 –