A4j: exchange event support does not work

I am trying to repeat the second drop down menu when I change the value in the first. But nothing happens when I click and change the value in the first drop-down list. Did I miss some important part?

My 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> 

My bean:

 @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()); } } 

EDIT 1:

If I check firebug, I get an error: Signature: 7/19/12 4:14:44 PM Error: ReferenceError: A4J not defined Source file: http://localhost:8080/admin/admin.seam?cid=11 Line: 1

+4
source share
2 answers

Ok, found a problem! There is a lot of crazy going on. Someone installed LoadScriptStrategy param for NONE in web.xml. This means that framework.pack.js and ui.pack.js are NOT .

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

Found this page in docs.jboss

If you use the "NONE" strategy, you must include the following scripts in your portlet or in the header of the portal page. If you use the JBoss Portal, you can add this to the jboss-portlet.xml file.

Added <a4j:loadScript src="resource:///org/ajax4jsf/framework.pack.js"/> to my header and viola template everything works like a charm.

I like my work =)

+3
source

I clearly see that your xhtml has an end tag </a4j:outputPanel> but not an start tag: <a4j:outputPanel>
If you change your tags, it will work.

0
source

All Articles