2009-08-05 5 views
0

Les gars, pour une raison quelconque, EL ne dit pas les actions des propriétés. Je test.xhtml cette page:JSF + facettes traitant l'action du haricot comme une propriété

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:ui="http://java.sun.com/jsf/facelets" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:f="http://java.sun.com/jsf/core"> 

<body> 

<form action="#{TestBean.test}"> 
    <p>#{TestBean.status}</p> 
    <input type="submit" value="Test Again"/> 
</form> 

</body> 

</html> 

TestBean.status est une propriété de chaîne (il existe une méthode getStatus) et TestBean.test est une méthode qui retourne « sucess ».

Chaque fois que j'appelle la page que je reçois cette exception:

ERROR [STDERR] 05/08/2009 17:41:07 com.sun.facelets.FaceletViewHandler handleRenderException 
SEVERE: Error Rendering View[/etc/test/test.xhtml] 
javax.el.ELException: /etc/test/test.xhtml: Bean: test.TestBean, property: test 
    at com.sun.facelets.compiler.AttributeInstruction.write(AttributeInstruction.java:53) 
    at com.sun.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:39) 
    at com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSupport.java:232) 
    at com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSupport.java:239) 
    at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:580) 
    at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108) 
    at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:216) 
    at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:384) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:138) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) 
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432) 
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) 
    at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) 
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) 
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) 
    at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112) 
    at java.lang.Thread.run(Unknown Source) 

Peut-être un long shot, je peux mieux décrire mon environnement. Mais à première vue, des conseils?

TKS

Répondre

0

Je pense que le problème était l'oubli de l'attribut jsfc.

Il devrait être:

<form **jsfc="h:form"** action="#{TestCaseBean.test}"> 

TKS.

0

Pour autant que je sache, EL n'a pas une syntaxe pour invoquer une méthode arbitraire. La syntaxe que vous utilisez, lorsqu'elle est appliquée à autre chose qu'un Map, List, ou un tableau, cherchera une propriété getter correspondant au nom; le point est du sucre syntactique pour TestBean["test"].

S'il est possible de définir les fonctions personnalisées pour EL dans le cadre d'une bibliothèque de balises JSP, elles doivent être implémentées par des méthodes statiques. Voir this tutorial pour plus d'informations sur la façon de le faire.

Toutefois, cette fonctionnalité est currently in the JSR pipeline.

Questions connexes