2012-04-04 34 views
0

我想在會議上傳遞範圍的選擇的單選按鈕值。我的代碼不起作用。JSF 2.0的<h:selectOneRadio />和<F:選擇信息/>如何傳遞作用域在會話中選擇的單選按鈕?

這裏是視圖(searchPerson.xhtml):我在做什麼錯在這裏

@ManagedBean @SessionScoped public class Controller { private String radioButtonField = "fachid"; private boolean VNGWSelected = false; public void selectRadioButton(ValueChangeEvent event){ 
    String select = (String) event.getComponent().getAttributes().get("radioButtonField"); 

    if(select.equals("vngw")) 
     VNGWSelected = true; 
} public String search() {... if(!VNGWSelected){logger.info("FachID RadioButton selected."); else{... logger.info("VNGW RadioButton selected."); ...} return "personsearch"; } ...} ... } 

可有人告訴我:

<h:form> 

         <h:selectOneRadio id="searchRadio" value="#{controller.radioButtonFlag}" valueChangeListener="#{controller.selectRadioButton}" > 
          <f:selectItem itemValue="fachid" itemLabel="#{msg.fachId}"> 
           <f:attribute name="radioButtonField" value="fachid" /> 
          </f:selectItem> 
          <f:selectItem itemValue="vngw" itemLabel="#{msg.VNGW}"> 
           <f:attribute name="radioButtonField" value="vngw" /> 
          </f:selectItem> 
         </h:selectOneRadio> 

         ...      <h:commandButton action="#{controller.search}" value="#{msg.search}"></h:commandButton> 

這裏是託管bean?

在此先感謝。

回答

1

試試這個:

<h:selectOneRadio id="searchRadio" value="#{controller.select}" > 
    <f:selectItem itemValue="fachid" itemLabel="#{msg.fachId}" /> 
    <f:selectItem itemValue="vngw" itemLabel="#{msg.VNGW}" /> 
</h:selectOneRadio> 

<h:commandButton action="#{controller.search}" value="#{msg.search}"></h:commandButton> 

我不知道的是什麼你的bean或什麼是控制器的目標的語義,但最好是使用屬性和getter和setter方法。

@ManagedBean 
@SessionScoped 
public class Controller { 
private String radioButtonField = "fachid"; 
private boolean VNGWSelected = false; 

private String select; 

public void setSelect(String select){ 
     this.select = select; 
    if(select.equals("vngw")) 
     VNGWSelected = true; 
} 

public String getSelect(){ 
    return select 
} 

public String search() {... 
    if(!VNGWSelected){ 
     logger.info("FachID RadioButton selected."); 
    else{... 
     logger.info("VNGW RadioButton selected."); ...} 
    return "personsearch"; 
} ...} ... } 
+0

謝謝ojota的回答。你的建議奏效了。現在我想用JavaScript來激活和停用相應的inputText。例如,如果選擇了單選按鈕FachID,所述的inputText FachID被激活時,如果沒有被選擇的單選按鈕FachID,所述的inputText FachID被禁用。你能告訴我它是如何工作的嗎? – Lukem 2012-04-10 12:49:07

+0

你不需要javascript.Inputtext有一個名爲渲染屬性,因此,你只是渲染=「#{} controller.VNGWSelected」,並在按鈕,您可以添加一個f:AJAX更新輸入文本 – 2012-04-10 13:11:37

+0

確定。你能給我一個例子嗎?提前致謝。 – Lukem 2012-04-10 15:15:13

相關問題