myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "John Singleton (JIRA)" <...@myfaces.apache.org>
Subject [jira] Updated: (MYFACES-1359) PortletExternalContextImpl.encodeNamespace called during portlet ActionRequest
Date Mon, 10 Jul 2006 08:50:30 GMT
     [ http://issues.apache.org/jira/browse/MYFACES-1359?page=all ]

John Singleton updated MYFACES-1359:
------------------------------------

    Status: Patch Available  (was: Open)

> PortletExternalContextImpl.encodeNamespace called during portlet ActionRequest
> ------------------------------------------------------------------------------
>
>          Key: MYFACES-1359
>          URL: http://issues.apache.org/jira/browse/MYFACES-1359
>      Project: MyFaces Core
>         Type: Bug

>   Components: Portlet_Support
>     Versions: 1.1.5-SNAPSHOT
>  Environment: Facelets + Liferay 4.0.0
>     Reporter: John Singleton

>
> Theis portlet fragment renders one of 2 components depending on the selection in the
selectOneMenu: 
> <div xmlns:f="http://java.sun.com/jsf/core"
>     xmlns:h="http://java.sun.com/jsf/html">        
>     <h:form>
>         <h:outputLabel for="list">foo</h:outputLabel>
>         <h:selectOneMenu value="${booleanTest.choice}" id="list"><f:selectItems
value="#{booleanTest.selectList}"/></h:selectOneMenu>
>         <h:commandButton action="#{booleanTest.doIt}"/>
>     </h:form>
>     <h:outputText rendered="#{empty booleanTest.list}" value="Empty"/>
>     <h:dataTable rendered="#{! empty booleanTest.list}" value="#{booleanTest.list}"
var="l" border="1">
>         <h:column>
>             <f:facet name="header"><h:outputText value="Column"/></f:facet>
>             <h:outputText value="#{l}"/>
>         </h:column>
>     </h:dataTable>
> </div>
> It's using this simple bean:
> public class BooleanTest {
>     private List<String> list =  new ArrayList<String>();
>     private List<String> emptyList = new ArrayList<String>();
>     private String choice = "Foo";
>     private List<SelectItem> selectList = null;
>     
>     public List<String> getList() {
>         if (choice.equals("Foo")) {
>             return emptyList;
>         } else {
>             if (list.isEmpty()) {
>                 list = new ArrayList<String>();
>                 list.add("Hello");
>                 list.add("World");
>                 list.add("!!!!!");
>             }
>             return list;
>         }
>     }
>     
>     public String doIt() {
>         return "success";
>     }
>     public List<SelectItem> getSelectList() {
>         if (selectList == null) {
>             selectList = new ArrayList<SelectItem>();
>             selectList.add(new SelectItem("Foo", "Foo"));
>             selectList.add(new SelectItem("bar", "bar"));
>         }
>         return selectList;
>     }
>     public String getChoice() {
>         return choice;
>     }
>     public void setChoice(String choice) {
>         this.choice = choice;
>     }
> }
> When I first add this portlet to a page, I get the drop down list, the submit button
and the "empty" message. If I select the 'bar' entry in the list and click submit I get the
error, " Can not call encodeNamespace() during a portlet ActionRequest"
> It seems to be because MyFacesGenericPortlet.processAction calls lifecycle.execute, which
in turn starts createing components for the table (which wasn't in the first call to the page).
This calls encodeNamespace for the new componenet IDs and thats when it falls over.
> I fixed this by changing PortletExternalContextImpl.encodeNamespace to return null instead
of throwing an IllegalStateException. My application seems to be working well with this solution,
but I don't know if it might have any knock on effects?

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Mime
View raw message