2009-08-05 4 views
0

Leute, aus irgendeinem Grund sagt EL nichts über Eigenschaften aus. Ich habe diese Seite test.xhtml:JSF + Facelets, die die Bohnenaktion als Eigenschaft behandeln

<?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 ist eine String-Eigenschaft (es gibt eine getStatus-Methode) und TestBean.test ist eine Methode, die „Erfolg“ zurückzukehren.

Jedes Mal, wenn ich die Seite, die ich diese Ausnahme erhalten rufen:

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) 

Vielleicht ist es ein weit hergeholt, kann ich besser meine Umgebung beschreiben. Aber auf den ersten Blick, irgendwelche Tipps?

tks

Antwort

0

Ich glaube, das Problem war das Jsfc-Attribut zu vergessen.

es sein sollte:

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

tks.

0

Soweit ich weiß, EL hat keine Syntax eine beliebige Methode aufzurufen. Die von Ihnen verwendete Syntax sucht, wenn sie auf etwas anderes als Map, List oder ein Array angewendet wird, nach einem Eigenschaften-Getter, der dem Namen entspricht. Der Punkt ist syntaktischer Zucker für TestBean["test"].

Während es möglich ist, benutzerdefinierte Funktionen für EL als Teil einer JSP-Tag-Bibliothek zu definieren, müssen sie durch statische Methoden implementiert werden. Weitere Informationen dazu finden Sie unter this tutorial.

Diese Funktion ist currently in the JSR pipeline jedoch.

Verwandte Themen