Property not Writable on type exception
843844Oct 12 2007 — edited Oct 13 2007I found another post about this problem but the reply was
Sorry, I have solved the problem.
-----------------
I am using JBoss 4.2.1.GA, Facelets and jboss-seam-CVS.2007-09-17_01-34-40. I am trying to do this.
<h:form>
<h:panelGrid id="lpg_01" binding="#{conceptManager.letterPanelGrid}"/>
</h:form>
Here is the Java code that is in the conceptManager Bean.
private HtmlPanelGrid letterPanelGrid;
public HtmlPanelGrid getLetterPanelGrid()
{
System.out.println("************ getLetterPanelGrid");
FacesContext facesContext = FacesContext.getCurrentInstance();
Application application = facesContext.getApplication();
// letterPanelGrid = new HtmlPanelGrid();
letterPanelGrid = (HtmlPanelGrid)application.createComponent
(HtmlPanelGrid.COMPONENT_TYPE);
letterPanelGrid.setId("lpg_01");
List<UIComponent> children = letterPanelGrid.getChildren();
letterPanelGrid.setColumns(1);
HtmlCommandLink link = new HtmlCommandLink();
// String s = new String("#{conceptManager.testMethod}");
String s = new String("homePage");
MethodExpression me = application.getExpressionFactory().
createMethodExpression(facesContext.getELContext(), s,
null, new Class<?>[0]);
link.setActionExpression( me );
link.setId("linkId");
HtmlOutputText output = new HtmlOutputText();
output.setValue(new String("ClickMe"));
link.getChildren().add(output);
children.add(link);
return letterPanelGrid;
}
When the page is initially displayed everything seems to work fine. I looked at the html in the browser and it looks correct. The problem occurs when I click on the command link. During the Restore View Phase JSF tries to perform the binding again but gives the following problem. I got lost trying to follow the Variable Resolver code, too much abstractness. I haven't given up looking at it but I think I need some help with this.
exception
javax.servlet.ServletException: /AZIndexT1.xhtml @26,61 binding="#{conceptManager.letterPanelGrid}": Property 'letterPanelGrid' not writable on type javax.faces.component.html.HtmlPanelGrid
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:44)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:60)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:150)
org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:44)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
root cause
javax.el.PropertyNotFoundException: /AZIndexT1.xhtml @26,61 binding="#{conceptManager.letterPanelGrid}": Property 'letterPanelGrid' not writable on type javax.faces.component.html.HtmlPanelGrid
com.sun.facelets.el.TagValueExpression.setValue(TagValueExpression.java:95)
com.sun.faces.lifecycle.RestoreViewPhase.doPerComponentActions(RestoreViewPhase.java:244)
com.sun.faces.lifecycle.RestoreViewPhase.doPerComponentActions(RestoreViewPhase.java:249)
com.sun.faces.lifecycle.RestoreViewPhase.doPerComponentActions(RestoreViewPhase.java:249)
com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:193)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:44)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:60)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:150)
org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:44)