0

選択したラジオボタンの値をスコープにしたセッションを渡したい。私のコードは機能しません。

ビュー(searchPerson.xhtml)は次のとおりです。

<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は次のとおりです。

@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"; } ...} ... }

誰かが私がここで間違っていることを教えてもらえますか?

前もって感謝します。

4

1 に答える 1

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のセマンティクスやコントローラーの目標はわかりませんが、属性とゲッターおよびセッターを使用することをお勧めします。

@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"; 
} ...} ... }
于 2012-04-04T19:04:36.957 に答える