myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Leonardo Uribe (JIRA)" <...@myfaces.apache.org>
Subject [jira] Resolved: (MYFACES-1695) f:setPropertyActionListener and h:commandButton leads to IllegalArgumentException
Date Tue, 23 Sep 2008 05:00:44 GMT

     [ https://issues.apache.org/jira/browse/MYFACES-1695?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Leonardo Uribe resolved MYFACES-1695.
-------------------------------------

    Resolution: Won't Fix
      Assignee: Leonardo Uribe

This issue will not advance anymore, so it is better to close it as won't fix. If anyone has
objection, it can be reopened (explaining the reasons why this should be left open or giving
hints about the direction to take)

> f:setPropertyActionListener and h:commandButton leads to IllegalArgumentException 
> ----------------------------------------------------------------------------------
>
>                 Key: MYFACES-1695
>                 URL: https://issues.apache.org/jira/browse/MYFACES-1695
>             Project: MyFaces Core
>          Issue Type: Bug
>    Affects Versions: 1.2.1-SNAPSHOT
>         Environment: Tomcat 6.0.13, Facelet 1.1.12 / Facelet 1.1.13 snapshot, MyFaces
1.2.1snapshot
>            Reporter: Jan Ziegler
>            Assignee: Leonardo Uribe
>
> Im having a problem with f:setPropertyActionListener when binding the target to an int-field.
I never had this problem when using the latest MyFaces 1.1 and Facelets 1.1.12 which backported
the setPropertyActionListener-functionality to JSF 1.1 Environments.
> Here´s an excerpt of the example xhtml-page:
> <h:commandButton value="click">
>      <f:setPropertyActionListener target="#{myBean.currentPage}" value="1" />
> </h:commandButton>
> and here the bean (int-approach):
> public class MyBean
> {
>     private int currentPage;
> ...
>      	public int getCurrentPage()
> 	{
> 		return this.currentPage; 
> 	}
>      	public int setCurrentPage(int page)
> 	{
> 		this.currentPage = page;
> 	}
> ...
> } 
> So when I click on the button to perform a submit I´m getting the following Exception:
> java.lang.IllegalArgumentException: argument type mismatch
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> 	at java.lang.reflect.Method.invoke(Unknown Source)
> 	at javax.el.BeanELResolver.setValue(BeanELResolver.java:108)
> 	at javax.el.CompositeELResolver.setValue(CompositeELResolver.java:68)
> 	at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.access$501(FacesCompositeELResolver.java:46)
> 	at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver$6.invoke(FacesCompositeELResolver.java:132)
> 	at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.invoke(FacesCompositeELResolver.java:148)
> 	at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.setValue(FacesCompositeELResolver.java:128)
> 	at org.apache.el.parser.AstValue.setValue(AstValue.java:114)
> 	at org.apache.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:249)
> 	at com.sun.facelets.el.TagValueExpression.setValue(TagValueExpression.java:93)
> 	at com.sun.facelets.tag.jsf.core.SetPropertyActionListenerHandler$SetPropertyListener.processAction(SetPropertyActionListenerHandler.java:113)
> 	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:48)
> 	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:487)
> 	at javax.faces.component.UICommand.broadcast(UICommand.java:105)
> 	at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:292)
> 	at javax.faces.component.UIViewRoot.process(UIViewRoot.java:209)
> 	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:117)
> 	at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
> 	at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
> 	at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
> 	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:137)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> 	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.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
> 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
> 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
> 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
> 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
> 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
> 	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
> 	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
> 	at java.lang.Thread.run(Unknown Source)
> Afterwards I changed the target-binding to String -this fixed the problem for my xhtml-example
above. I change the Methods like this:
> public class MyBean
> {
>     private int currentPage;
> ...
>      	public String getCurrentPage()
> 	{
>                 return String.valueOf(this.currentPage); 
> 	}
>      	public void setCurrentPage(String page)
> 	{
>                 this.currentPage = Integer.parseInt(page);
> 	}
> ...
> } 
> so far so good, but I´m facing another problem, when having "calculated-expression"
as the value of setPropertyActionListener like:
> <f:setPropertyActionListener target="#{myBean.currentPage}" value="#{myBean.currentPage
- 1}" />
> then neither the int-approach nor the string-approach works. with using the int-binding
I´m getting the same error as above and with the string-binding i get another IllegalArgumentException
(caused by a ClassCastException):
> java.lang.IllegalArgumentException: java.lang.ClassCastException@9945e9
> 	at sun.reflect.GeneratedMethodAccessor188.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> 	at java.lang.reflect.Method.invoke(Unknown Source)
> 	at javax.el.BeanELResolver.setValue(BeanELResolver.java:108)
> 	at javax.el.CompositeELResolver.setValue(CompositeELResolver.java:68)
> 	at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.access$501(FacesCompositeELResolver.java:46)
> 	at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver$6.invoke(FacesCompositeELResolver.java:132)
> 	at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.invoke(FacesCompositeELResolver.java:148)
> 	at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.setValue(FacesCompositeELResolver.java:128)
> 	at org.apache.el.parser.AstValue.setValue(AstValue.java:114)
> 	at org.apache.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:249)
> 	at com.sun.facelets.el.TagValueExpression.setValue(TagValueExpression.java:93)
> 	at com.sun.facelets.tag.jsf.core.SetPropertyActionListenerHandler$SetPropertyListener.processAction(SetPropertyActionListenerHandler.java:113)
> 	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:48)
> 	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:487)
> 	at javax.faces.component.UICommand.broadcast(UICommand.java:105)
> 	at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:292)
> 	at javax.faces.component.UIViewRoot.process(UIViewRoot.java:209)
> 	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:117)
> 	at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
> 	at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
> 	at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
> 	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:137)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> 	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.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
> 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
> 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
> 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
> 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
> 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
> 	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
> 	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
> 	at java.lang.Thread.run(Unknown Source)
> I also tried to use standard converters to ensure that "value" is always converted to
an Integer or String, e.g.:
> <f:setPropertyActionListener target="#{myBean.currentPage}" value="1" >
>      <f:convertNumber integerOnly="true"/>
> </f:setPropertyActionListener>
> But I also had no luck with this. It didn´t change anything.
> So whats wrong here? Do I have to ensure or convert the value somehow or should the jsf-implementation
perform the needed convertions?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message