JSF + Facelets علاج عمل الفول كعقار
سؤال
والرجال، لسبب EL ليس هو قول الإجراءات من الخصائص. لدي هذه الصفحة test.xhtml:
<?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 هو خاصية سلسلة (هناك طريقة getStatus) وTestBean.test هو الأسلوب الذي العودة "نجاح وظائف".
وفي كل مرة أسميه الصفحة أحصل على هذا الاستثناء:
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)
وربما يكون من تسديدة بعيدة، أستطيع أن أصف أفضل بيئتي. ولكن للوهلة الأولى، أي نصائح؟
وتكس
المحلول
وأعتقد أن المشكلة تم نسيان السمة jsfc.
ويجب أن تكون:
<form **jsfc="h:form"** action="#{TestCaseBean.test}">
وتكس.
نصائح أخرى
وبقدر ما أعرف، EL ايوجد جملة لاستدعاء الأسلوب التعسفي. بناء الجملة الذي تستخدمه، عندما يطبق على أي شيء آخر غير Map
، List
، أو مجموعة، سوف تبحث عن جالبة الملكية الموافق الاسم؛ النقطة هي نحوي السكر لTestBean["test"]
.
ولئن كان من الممكن تحديد العرف <م> وظائف م> لEL كجزء من مكتبة العلامة JSP، يجب أن تنفذ من قبل وسائل ثابتة. انظر هذا البرنامج التعليمي للحصول على مزيد من المعلومات حول كيفية القيام بذلك.
وهذه الميزة حاليا في JSR خط أنابيب لكن.