[英]getting value from radiobutton group that is binded to a managed bean
在我的XPage上,我有一個單選按鈕組控件,該控件綁定到托管bean:
<xp:radioGroup value="#{employeeBean.employee.staffMember}" id="radioStaff">
<xp:selectItem itemLabel="Yes" />
<xp:selectItem itemLabel="No" />
<xp:eventHandler event="onchange" submit="true" refreshMode="partial" refreshId="radioStaffDept"></xp:eventHandler>
</xp:radioGroup>
設置為是時,我想顯示另一個輸入字段以輸入部門。
我試圖通過部分刷新選項來設置可見性,但是我總是通過我的bean設置返回值。
我測試通過以下方式收集其價值:
<xp:text escape="true" id="computedField1">
<xp:this.value><![CDATA[#{javascript:
var radio1:com.ibm.xsp.component.xp.XspInputRadio = getComponent("radioStaff");
return radio1.getValue()}]]></xp:this.value>
</xp:text>
因此,當加載並且值是No時,如果我將單選按鈕設置為Yes,它將保持為No。
我應該如何從單選按鈕收集(更改的)值?
binding="#{myValue}"
:我嘗試添加綁定屬性(例如binding="#{myValue}"
),但是通過此方法得到了相同的不良結果。
PP我也嘗試在onChange事件上設置staffMember字段,但這也不起作用( employeeBean.employee.setStaffMember("Yes");
)
===
我不確定我是否理解正確,可以,可以使用以下代碼檢查人員是否是工作人員,但是當我更改單選按鈕中的選項時,如何(臨時)將值寫回到我的bean中的投標對象中?
private Employee employee;
public Boolean isStaffMember(){
if (employee.getStaffMember()=="Yes"){
return false;
}
else{
return true;
}
}
public void setStaffMember(String value){
employee.setStaffMember(value);
}
<xp:radioGroup
value="#{employeeBean.employee.staffMember}"
binding="#{staffMember}" id="radioStaffMember">
<xp:selectItem itemLabel="Yes" />
<xp:selectItem itemLabel="No" />
<xp:eventHandler event="onchange"
submit="true" refreshMode="partial"
refreshId="pnlStaffMemberDept" >
<xp:this.action><![CDATA[#{javascript:var thisVal = getComponent("radioStaffMember").getValue();
employeeBean.setStaffMember(thisVal);}]]></xp:this.action>
</xp:eventHandler>
</xp:radioGroup>
考慮以下:
<p>Staff member?</p>
<xp:radioGroup value="#{employeeBean.employee.staffMember}"
id="radioStaff">
<xp:selectItem itemLabel="Yes" />
<xp:selectItem itemLabel="No" />
<xp:eventHandler event="onchange" submit="true"
execMode="partial" refreshMode="partial" refreshId="examples" />
</xp:radioGroup>
<xp:div id="examples">
<xp:text disableOutputTag="true"
rendered="#{not empty employeeBean.employee.staffMember}">
<p>
<xp:text value="The value is: #{employeeBean.employee.staffMember}" />
</p>
<p>
<xp:text value="A staff member (checkbox string value evaluation)"
rendered="#{employeeBean.employee.staffMember eq 'Yes'}" />
</p>
<p>
<xp:text value="A staff member (boolean value evaluation)"
rendered="#{employeeBean.staffMember}" style="color: green" />
</p>
<p>
<xp:text value="Not a staff member (boolean value evaluation)"
rendered="#{not employeeBean.staffMember}" style="color: red" />
</p>
</xp:text>
</xp:div>
和豆組成。 我使用了地圖,因為我對您的Employee
類一無所知:):
public class EmployeeBean implements Serializable {
private static final long serialVersionUID = 1L;
private Map<String, Object> employee;
public Map<String, Object> getEmployee() {
if (employee == null) {
employee = new HashMap<String, Object>();
}
return employee;
}
public boolean isStaffMember() {
return "Yes".equals(getEmployee().get("staffMember"));
}
}
一些建議:
javascript
語言。 從長遠來看,它不會幫助您。 此外,觀看源代碼很痛苦。 盡可能多地使用EL表達式,並始終努力 .equals
xp:div id="example
始終可見,然后添加了一個內部標記來檢查staffMember
值)。這並不意味着您一定會必須這樣做,這取決於您XPage的結構。 execMode
縮小POST范圍。 力求表現 您無需追求UI組件。 為了提高可見性,請使用您在bean上作為布爾方法提供的EL表達式employeeBean.isStaffMember
。 只要確保您的部分刷新目標(面板?)既包含單選按鈕又包含額外的字段
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.