4

最初のドロップダウンの値を変更すると、2 番目のドロップダウンを再レンダリングしようとしています。しかし、最初のドロップダウンをクリックして値を変更しても何も起こりません。重要な部分を見逃していませんか?

私のxhtml:

<h:form>
    <h:selectOneMenu value="#{adminBean.currentLeadCategory}" required="true" styleClass="formfield fpgeo" style="width:20em;margin-right:20px;">
        <a4j:support event="onchange" action="#{adminBean.currentLeadCategoryChanged()}"
 reRender="componentToReRender"/>
        <s:selectItems value="#{leadCategories}" var="leadCategory" label="#{leadCategory.name}" noSelectionLabel="Choose Category"/>
        <s:convertEntity/>
    </h:selectOneMenu>

<a4j:outputPanel id="componentToReRenderWrapper">

    <h:selectOneMenu id="componentToReRender" value="#{adminBean.currentCounty}"
 styleClass="formfield fpgeo" style="width:20em;margin-right:20px;">
        <s:selectItems value="#{adminBean.counties}" var="county" label="#{county.name}" noSelectionLabel="choose"/>
        <s:convertEntity/>
    </h:selectOneMenu>
<h:messages/>
</a4j:outputPanel>
</h:form>

私の豆:

@AutoCreate
@Scope(ScopeType.CONVERSATION)
@Name("adminBean")
@MeasureCalls
@Restrict("#{s:hasRole('admin') or s:hasRole('sales')}")
public class AdminBean implements Serializable {

    private LeadCategory currentLeadCategory;
    private List<County> counties = new ArrayList<County>();
    private County currentCounty;

@Factory(value = "leadCategories", autoCreate = true, scope = ScopeType.SESSION)
    public List<LeadCategory> fetchLeadCategories() {
        Query query = entityManager.createQuery("select l from LeadCategory l");
        return query.getResultList();
    }

public LeadCategory getCurrentLeadCategory() {
        return currentLeadCategory;
    }

    public void setCurrentLeadCategory(LeadCategory currentLeadCategory) {
        this.currentLeadCategory = currentLeadCategory;
    }

    public County getCurrentCounty() {
        return currentCounty;
    }

    public void setCurrentCounty(County currentCounty) {
        this.currentCounty = currentCounty;
    }

    public void currentLeadCategoryChanged() {
        this.loadCountiesForCategory();
    }

    public List<County> getCounties() {
        return counties;
    }

    public void setCounties(List<County> counties) {
        this.counties = counties;
    }

    public void loadCountiesForCategory(){
        if(currentLeadCategory == null){
            counties = new ArrayList<County>();
        }
        counties = new ArrayList<County>(currentLeadCategory.getCounties());
    }


}

編集1:

firebug を確認すると、次のエラーが表示されます: Timestamp: 7/19/12 4:14:44 PM Error: ReferenceError: A4J is not defined Source File: http://localhost:8080/admin/admin.seam?cid=11 Line: 1

4

2 に答える 2

3

問題が見つかりました。ここで起こっている大きな狂気。誰かが web.xml で LoadScriptStrategy パラメータを NONE に設定しています。これにより、framework.pack.js と ui.pack.js が読み込まれていません

<context-param>
<param-name>org.richfaces.LoadScriptStrategy</param-name>
<param-value>NONE</param-value>
</context-param>

docs.jbossでこのページを見つけました

「NONE」戦略を使用する場合は、ポートレットまたはポータル ページ ヘッダーに次のスクリプトを含める必要があります。JBoss Portal を使用している場合は、これを jboss-portlet.xml ファイルに追加できます。

<a4j:loadScript src="resource:///org/ajax4jsf/framework.pack.js"/> ヘッダー テンプレートとビオラに追加すると、すべてが魅力的に機能します。

私は自分の仕事が大好きです =)

于 2012-07-19T15:10:58.390 に答える
0

</a4j:outputPanel>xhtmlには終了タグがありますが、開始タグがないことがはっきりとわかります<a4j:outputPanel>
。タグを再配置すると機能します。

于 2012-07-19T14:43:44.360 に答える