ListShuttle + CommandButton problem
pmanabe Feb 7, 2008 7:38 AMHi all,
I have commandButtons in my webpage and one listShuttle. When I click in the button Add for example my list losses the value and throw this exception: (The action called is a simple systemout to test this problem...this action isn't called...)
javax.faces.el.PropertyNotFoundException: Bean: java.lang.String, property: name at org.apache.myfaces.el.PropertyResolverImpl.getPropertyDescriptor(PropertyResolverImpl.java:500) at org.apache.myfaces.el.PropertyResolverImpl.getPropertyDescriptor(PropertyResolverImpl.java:472) at org.apache.myfaces.el.PropertyResolverImpl.getProperty(PropertyResolverImpl.java:436) at org.apache.myfaces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:85) at org.apache.myfaces.custom.security.SecurityContextPropertyResolver.getValue(SecurityContextPropertyResolver.java:101) at org.apache.myfaces.el.ELParserHelper$MyPropertySuffix.evaluate(ELParserHelper.java:535) at org.apache.commons.el.ComplexValue.evaluate(ComplexValue.java:145) at org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:386) at javax.faces.component.UIOutput.getValue(UIOutput.java:80) at org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils.getStringValue(RendererUtils.java:223) at org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlTextRendererBase.renderOutput(HtmlTextRendererBase.java:69) at org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlTextRendererBase.encodeEnd(HtmlTextRendererBase.java:57) at org.apache.myfaces.renderkit.html.ext.HtmlTextRenderer.renderNormal(HtmlTextRenderer.java:159) at org.apache.myfaces.renderkit.html.ext.HtmlTextRenderer.encodeEnd(HtmlTextRenderer.java:83) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:539) at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:286) at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:262) at org.richfaces.renderkit.ListShuttleRendererBase.encodeOneRow(ListShuttleRendererBase.java:182) at org.richfaces.renderkit.AbstractRowsRenderer.process(AbstractRowsRenderer.java:87) at org.richfaces.model.ListShuttleDataModel.walk(ListShuttleDataModel.java:57) at org.ajax4jsf.component.UIDataAdaptor.walk(UIDataAdaptor.java:994) at org.richfaces.renderkit.AbstractRowsRenderer.encodeRows(AbstractRowsRenderer.java:107) at org.richfaces.renderkit.ListShuttleRendererBase.encodeRows(ListShuttleRendererBase.java:99) at org.richfaces.renderkit.html.ListShuttleRenderer.doEncodeChildren(ListShuttleRenderer.java:247) at org.richfaces.renderkit.html.ListShuttleRenderer.doEncodeChildren(ListShuttleRenderer.java:233) at org.richfaces.renderkit.ListShuttleRendererBase.encodeChildren(ListShuttleRendererBase.java:226) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:527) at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:282) at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:262) at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:284) at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:143) at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:86) at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:134) at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:86) at org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:134) at org.ajax4jsf.renderkit.AjaxContainerRenderer.encodeAjax(AjaxContainerRenderer.java:122) at org.ajax4jsf.component.AjaxViewRoot.encodeAjax(AjaxViewRoot.java:553) at org.ajax4jsf.context.AjaxContextImpl.renderAjaxRegion(AjaxContextImpl.java:286) at org.ajax4jsf.context.AjaxContextImpl$2.invoke(AjaxContextImpl.java:201) at org.ajax4jsf.context.JsfOneOneInvoker.invokeOnComponent(JsfOneOneInvoker.java:78) at org.ajax4jsf.context.AjaxContextImpl.invokeOnComponent(AjaxContextImpl.java:157) at org.ajax4jsf.context.AjaxContextImpl.renderSubmittedAjaxRegion(AjaxContextImpl.java:215) at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:239) at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41) at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:132) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:140) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141) at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
myPage
<h:form id="frmBulkAdjustment">
<t:div styleClass="adj_bulk_types" id="divAdjTypes">
<richfaces:listShuttle sourceValue="#{bulkAdjustment.bulkAdjustmentBean.source}" targetValue="#{bulkAdjustment.bulkAdjustmentBean.target}"
sourceListWidth="140" targetListWidth="140" listsHeight="153" var="item" id="listAdjType"
sourceCaptionLabel="Available" targetCaptionLabel="Selected" fastOrderControlsVisible="false"
orderControlsVisible="false" listClass="grey_11_bold" immediate="true"
sourceSelection="#{bulkAdjustment.bulkAdjustmentBean.freeItems}" targetSelection="#{bulkAdjustment.bulkAdjustmentBean.items}">
<richfaces:column>
<t:outputText value="#{item.name}" />
</richfaces:column>
</richfaces:listShuttle>
</t:div>
<t:div styleClass="adj_content_div_center" id="divFields" >
<t:panelGrid columns="5" columnClasses="tdAlignRight" cellspacing="5" cellpadding="0">
<t:outputLabel value="Profit Center : " for="pftInput" styleClass="grey_11"/>
<t:panelGroup>
<t:inputText id="pftInput" styleClass="grey_11" style="width:150px;" value="#{bulkAdjustment.searchResource.searchResourcesBean.profitCenterTyped}"/>
<richfaces:suggestionbox id="suggestionBoxId" for="pftInput" rules="none" suggestionAction="#{bulkAdjustment.searchResource.autoComplete}"
var="pft" fetchValue="#{pft.code}" minChars="1" width="200" height="150" cellpadding="2" shadowOpacity="4">
<h:column>
<h:outputText value="#{pft.code}" />
</h:column>
</richfaces:suggestionbox>
</t:panelGroup>
<a4j:commandButton value="Add" action="#{bulkAdjustment.updateProfitCenter}" styleClass="grey_12"
reRender="divErrorMessage,divFields,divAdjTypes"/>
<a4j:commandButton value="Find" reRender="divProfitCenter,divGroupButtons" type="button" styleClass="grey_12"
action="#{bulkAdjustment.searchResource.showPftSearchResourcePanel}" oncomplete="javascript:Richfaces.showModalPanel('searchProfitCenter');"/>
<t:message for="pftInput" styleClass="validationError"/>
<t:outputLabel value="Profit Center Selected : " for="pftSelectedInput" styleClass="grey_11"/>
<t:panelGroup colspan="3">
<t:inputText id="pftSelectedInput" disabled="true" maxlength="20" value="#{bulkAdjustment.searchResource.searchResourcesBean.profitCenters}"
styleClass="grey_11" style="width:217px"/>
</t:panelGroup>
<t:message for="pftSelectedInput" styleClass="validationError"/>
<t:panelGroup colspan="4">
<t:panelGrid columns="2" cellspacing="5" cellpadding="0">
<t:commandButton value="Search" styleClass="grey_12" action=""/>
<t:commandButton value="Clear" styleClass="grey_12" action="#{bulkAdjustment.clearFields}"/>
</t:panelGrid>
</t:panelGroup>
</t:panelGrid>
</t:div>
<t:div id="divErrorMessage" styleClass="divAlignCenter" style="margin-top: 20px;">
<t:messages id="errorMessage" layout="table" styleClass="ValidateError" globalOnly="true"/>
</t:div>
<%@include file="include/loading.jsp"%>
</h:form>myBean
public class AdjustmentType {
private String name;
private String code;
public AdjustmentType(){}
public AdjustmentType(String name,String code){
this.name = name;
this.code = code;
}
public int hashCode() {
int result = 1;
result += ((name == null) ? 0 : name.hashCode());
result *= ((code == null) ? 1 : code.hashCode());
return result;
}
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
AdjustmentType other = (AdjustmentType) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (!code.equals(other.code))
return false;
return true;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the code
*/
public String getCode() {
return code;
}
/**
* @param code the code to set
*/
public void setCode(String code) {
this.code = code;
}
}