1

保存ボタンをクリックすると、「addCompany」アクションが呼び出されますが、デバッグして、バッキングBeanのインスタンス変数companyNameの値を確認すると、nullが表示されます。私は本当にばかげた間違いをしていると思います。

モーダルXHTML:別のxhtmlのフォームタグに含まれています。

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                    xmlns:ui="http://java.sun.com/jsf/facelets"
                    xmlns:h="http://java.sun.com/jsf/html"
                    xmlns:a4j="http://richfaces.org/a4j"
                    xmlns:rich="http://richfaces.org/rich"
                    xmlns:f="http://java.sun.com/jsf/core">

        <rich:modalPanel id="AddDmpCompanyModalId"
                             showWhenRendered="#{companyAdminAction.showAddCompanyModal}"
                             width="500"
                             height="340"
                             autosized="true">

                <f:facet name="header">
                    <h:outputText value="Add Company"/>
                </f:facet>


                <a4j:outputPanel id="addDmpCompanyInputPanel">

                            <label style="font-weight:bold;margin-top:5px">Name: </label>
                            <h:inputText id="companyName"  value="#{companyAdminAction.companyName}"/>

                                <a4j:commandLink id="submit-add-company-name-link"
                                                 immediate="true"
                                                 action="#{companyAdminAction.addCompany()}"
                                                 styleClass="button"
                                                 reRender="AddDmpCompanyModalId,addDmpCompanyInputPanel"
                                                 limitToList="true">
                                    <span class="inner-button">Save</span>
                                </a4j:commandLink>


                </a4j:outputPanel>

            </rich:modalPanel>

    </ui:composition>

バッキングビーン(シームコンポーネント)

Name("companyAdminAction")
@Scope(ScopeType.CONVERSATION)
public class CompanyAdmin {

    private String companyName;     

    public String getCompanyName() {
        return companyName;
    }

    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }

      public void addCompany() {
    // On click of save debugger comes here, but shows the value of          
      //companyName as null 
     }  

}
4

2 に答える 2

0

複合コンポーネントがフォーム内にあり、フォーム内にcompanyNameBeanの属性にバインドされた別のコンポーネントがある場合があります。のフォームを追加し、rich:modalPanel含まれている実際のフォームの外に移動します。コードは次のようになります。

<rich:modalPanel id="AddDmpCompanyModalId" ... >
    <f:facet name="header">
        <h:outputText value="Add Company"/>
    </f:facet>
    <h:form>
        <a4j:outputPanel id="addDmpCompanyInputPanel">
            ...
        </a4j:outputPanel>
    </h:form>
</rich:modalPanel>

より詳しい情報:

于 2012-07-06T14:32:04.720 に答える
0

はい、理由は非常に単純です:あなたはあなたので使用immediate=trueしています<a4j:commandLink/>。このオプションは、値が変換されてモデルが更新されるに、JSFがaddCompany()関数を呼び出すようにします。

immediate=true解決策も同様に簡単です。から属性を削除します<a4j:commandLink/>

于 2012-07-06T20:08:07.393 に答える