You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Martin Marinschek (JIRA)" <de...@myfaces.apache.org> on 2006/09/19 22:35:24 UTC

[jira] Updated: (TOMAHAWK-377) aliasBean saves its children when parent has rendered="false"

     [ http://issues.apache.org/jira/browse/TOMAHAWK-377?page=all ]

Martin Marinschek updated TOMAHAWK-377:
---------------------------------------

    Status: Open  (was: Patch Available)

> aliasBean saves its children when parent has rendered="false"
> -------------------------------------------------------------
>
>                 Key: TOMAHAWK-377
>                 URL: http://issues.apache.org/jira/browse/TOMAHAWK-377
>             Project: MyFaces Tomahawk
>          Issue Type: Bug
>          Components: Alias Bean
>    Affects Versions: 1.0.9m9
>            Reporter: Martin Zdila
>         Assigned To: Sylvain Vieujot
>
> Hello
> <h:panelGroup rendered="#{tableColumnForm.inputTypeName == 'label'}">
> 	<x:aliasBean alias="#{holder}" value="#{tableColumnForm.inputType.visualDefinition}">
> 		<f:subview id="inputTypeLabelVisualDefinition">
> 			<jsp:include page="/inc/fontPicker.jsp" />
> 		</f:subview>
> 	</x:aliasBean>
> </h:panelGroup>
> This JSF code causes exception although #{tableColumnForm.inputTypeName == 'label'} (rendered) is false:
> javax.faces.el.PropertyNotFoundException: Bean: com.kovine.kfe.dao.InputTypeCheckbox, property: visualDefinition
> 	at org.apache.myfaces.el.PropertyResolverImpl.getPropertyDescriptor(PropertyResolverImpl.java:464)
> 	at org.apache.myfaces.el.PropertyResolverImpl.getPropertyDescriptor(PropertyResolverImpl.java:435)
> 	at org.apache.myfaces.el.PropertyResolverImpl.getProperty(PropertyResolverImpl.java:398)
> 	at org.apache.myfaces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:104)
> 	at org.apache.myfaces.el.ELParserHelper$MyPropertySuffix.evaluate(ELParserHelper.java:555)
> 	at org.apache.commons.el.ComplexValue.evaluate(ComplexValue.java:145)
> 	at org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:441)
> 	at org.apache.myfaces.custom.aliasbean.AliasBean.makeAlias(AliasBean.java:270)
> 	at org.apache.myfaces.custom.aliasbean.AliasBean.makeAlias(AliasBean.java:249)
> 	at org.apache.myfaces.custom.aliasbean.AliasBean.processSaveState(AliasBean.java:145)
> 	at javax.faces.component.UIComponentBase.processSaveState(UIComponentBase.java:466)
> 	at javax.faces.component.UIComponentBase.processSaveState(UIComponentBase.java:466)
> 	at javax.faces.component.UIComponentBase.processSaveState(UIComponentBase.java:466)
> 	at javax.faces.component.UIComponentBase.processSaveState(UIComponentBase.java:466)
> 	at javax.faces.component.UIComponentBase.processSaveState(UIComponentBase.java:454)
> 	at javax.faces.component.UIComponentBase.processSaveState(UIComponentBase.java:466)
> 	at org.apache.myfaces.application.jsp.JspStateManagerImpl.getComponentStateToSave(JspStateManagerImpl.java:106)
> 	at org.apache.myfaces.application.jsp.JspStateManagerImpl.saveSerializedView(JspStateManagerImpl.java:249)
> 	at org.apache.myfaces.taglib.core.ViewTag.doEndTag(ViewTag.java:141)
> 	at org.apache.jsp.pages.tableColumnForm_jsp._jspx_meth_f_view_0(tableColumnForm_jsp.java:341)
> nForm_jsp.java:341)
> The expression #{tableColumnForm.inputType.visualDefinition} should be evaluated only if inputType is of type "label" (then #{tableColumnForm.inputTypeName == 'label'}). AliasBean tries to save state of all its children without regard if they are (was) rendered or not. In my case, if #{tableColumnForm.inputTypeName == 'label'} is false, then #{tableColumnForm.inputType} doesn't contain "visualDefinition" property (because it contains reference to another object in that moment) and that causes an exception. If I replace x:aliasBean tag to eg. <h:outputText value="#{tableColumnForm.inputType.visualDefinition.fontFace}" /> then it doesn't throw the exception although #{tableColumnForm.inputType} doesn't contain "visualDefinition" property.
> So, in short: aliasBean should not save state of its children when its parent is not rednered (because its children could contain references to for example not existing properties).
> I hope my explanation is enough clear. If not, please notify me (in the comment).
> Thanks in advance for your effort
> Martin

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