0

ah:dataTable の値を動的に変更するにはどうすればよいですか? 次のコードがあります(スニペットのみ):

        <h:dataTable value="#{DataProvider.mapValues}" var="o" border="1">
                <h:column>
                    <h:outputText value="#{o.key}"></h:outputText>
                </h:column>
                <h:column>
                    <h:outputText value="#{o.value}"></h:outputText>
                </h:column>
        </h:dataTable>

            <h:selectOneMenu>
                <f:selectItem itemLabel="Choose Language.."></f:selectItem>
                <f:selectItem itemLabel="DE"></f:selectItem>
                <f:selectItem itemLabel="CZ"></f:selectItem>
                <f:selectItem itemLabel="EN"></f:selectItem>
                <f:selectItem itemLabel="FR"></f:selectItem>
                <f:selectItem itemLabel="ES"></f:selectItem>
                <f:selectItem itemLabel="PT"></f:selectItem>
            </h:selectOneMenu>

したがって、基本的に、SelectOneMenu から言語を選択すると、dataTable は異なる値 ("#{DataProvider.mapValues(en)" など) を使用する必要があります。明確にするために、コンボボックスから値を選択するたびに、dataTable を別の値でリロードする必要があります。

これは JavaScript で動作すると思いますが、正確にどのように実行する必要があるかはわかりません。どんな助けでも大歓迎です。ありがとう!

編集: JSF1.2 を使用する必要があるため、組み込みの AJAX 機能を使用できません。

4

1 に答える 1

2

DataProvider.getMapValuesのようにします。

private String selectedLanguage; // + getter and setter    

private Map getMapForLanguage(String language)
{ ... }

public Map getMapValues(){
    return getMapForLanguage(selectedLanguage);
}

selectedLanguageを選択した値にバインドし、次のように選択時にh:selectOneMenuajax 更新を行います。h:dataTable

<h:dataTable id="myTable" ... >
...
<h:selectOneMenu value="#{DataProvider.selectedLanguage}">
    ...
    <f:ajax render="myTable"/>
</h:selectOneMenu>
于 2013-07-17T08:02:56.590 に答える