Hi all,
I am new to Portlets and Ajax4Java.
In a bean I put a code like this...
request.getPortletSession().setAttribute("usersettings", settingsBean);
and in the page i have,
<a4j:portlet
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:a4j="https://ajax4jsf.dev.java.net/ajax">
<f:view>
<h:form>
<div align="center">
<h:panelGrid id="panel" columns="2" align="center" border="0" styleClass="specBody">
<h:outputText value="Please select a news category: " />
<a4j:region selfRendered="true" ajaxListener="#{usersettings.processCategoryChange}" id="Region">
<h:selectOneMenu id="categoryList" value="#{usersettings.selectedCategory}">
<!--
<a4j:ajaxListener type="org.ajax4jsf.ajax.ForceRender" event="onchange"
actionListener="#{usersettings.processCategoryChange}" reRender="channelList"></a4j:ajaxListener>
<a4j:support actionListener="#{usersettings.processCategoryChange}" event="onchange" reRender="channelList" />
-->
<f:selectItems value="#{usersettings.categoryNames}" />
<a4j:support action="#{usersettings.processCategoryChange}" event="onchange" reRender="channelList"/>
</h:selectOneMenu>
</a4j:region>
<h:outputText id="channel" value="Please select channels: " style="width:30"/>
<h:selectManyListbox id="channelList" value="#{usersettings.selectedFields}" size="5" >
<f:selectItems value="#{usersettings.fields}" />
</h:selectManyListbox>
<br />
<f:facet name="footer">
<h:panelGroup style="align: right">
<a4j:commandButton id="cButton" value="Update" reRender="output"
actionListener="#{usersettings.processUpdate}" style="align: right"/>
</h:panelGroup>
</f:facet>
</h:panelGrid>
</div>
</h:form>
</f:view>
</a4j:portlet>
In the bean to the process AjaxEvent,
public void processCategoryChange(AjaxEvent e) {
String value = (String) e.getSource();
this.getFields().clear();
for (Iterator itr = this.getNewsCategories().listIterator(); itr.hasNext();) {
NewsCategory category = (NewsCategory) itr.next();
if (category.getName().equals(value)) {
for (Iterator iter = category.getFields().iterator(); iter.hasNext();) {
NewsField field = (NewsField) iter.next();
this.getFields().add(field.getName());
}
}
}
}
and I'm getting an exception...
18:16:41,343 WARN [MyFacesResourceLoader] Unparsable lastModified : @lastModified@
18:16:42,015 WARN [LoadContexts] fail-safe cleanup (collections) : org.hibernate.engine.loading.CollectionLoadContext@1a349b9<rs=com.mysql.jdbc.ResultSet@77b81f>
18:16:42,015 WARN [LoadContexts] fail-safe cleanup (collections) : org.hibernate.engine.loading.CollectionLoadContext@13d16a7<rs=com.mysql.jdbc.ResultSet@9e9dbe>
18:16:42,015 WARN [LoadContexts] fail-safe cleanup (collections) : org.hibernate.engine.loading.CollectionLoadContext@19a34bb<rs=com.mysql.jdbc.ResultSet@12a4cb3>
18:16:42,015 WARN [LoadContexts] fail-safe cleanup (collections) : org.hibernate.engine.loading.CollectionLoadContext@fbf446<rs=com.mysql.jdbc.ResultSet@1cc4318>
18:16:42,015 WARN [LoadContexts] fail-safe cleanup (collections) : org.hibernate.engine.loading.CollectionLoadContext@16237c3<rs=com.mysql.jdbc.ResultSet@a1c1ee>
18:16:58,250 ERROR [PhaseListenerManager] Exception in PhaseListener RESTORE_VIEW(1) afterPhase
javax.faces.FacesException: Prefix for attributes in portlet session scope not found
at org.ajax4jsf.portlet.context.ServletContextImpl.getSessionPrefix(ServletContextImpl.java:212)
at org.ajax4jsf.portlet.context.ServletContextImpl.getSessionAttribute(ServletContextImpl.java:219)
at org.ajax4jsf.portlet.context.AbstractExternalContext$8.getAttribute(AbstractExternalContext.java:459)
at org.ajax4jsf.portlet.context.ContextAttributesMap.get(ContextAttributesMap.java:18)
at org.apache.myfaces.el.VariableResolverImpl.resolveVariable(VariableResolverImpl.java:281)
at org.ajax4jsf.framework.ajax.AjaxContext.getCurrentInstance(AjaxContext.java:154)
at org.ajax4jsf.framework.renderer.AjaxPhaseListener.afterPhase(AjaxPhaseListener.java:76)
at org.apache.myfaces.lifecycle.PhaseListenerManager.informPhaseListenersAfter(PhaseListenerManager.java:92)
at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:99)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:127)
at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:277)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
at java.lang.Thread.run(Unknown Source)
18:16:58,265 ERROR [PhaseListenerManager] Exception in PhaseListener RESTORE_VIEW(1) afterPhase
can anyone help me?
thanks,
Anoop