据我所知,当一个JSF操作返回"" (空string)用户停留在当前页面,但视图刷新。 但是,当操作返回null ,用户仍然停留在当前页面上,但旧视图将被重用。 我的问题是: 上述说法是否正确(准确)? 如果是的话,那么这有什么影响呢? 具体来说,在页面上的数据(例如,JSF UI组件中的值,或存储在DataTable中的请求范围bean中的数据)上使用一种方法与另一种方法会产生什么效果? 在什么情况下应该使用另一种?
在分析使用Google PageSpeed的JSF 2.1 + PrimeFaces 4.0 web应用程序的性能时,build议除其他外推迟parsingJavaScript文件。 在带有<p:layout>的testing页面上,以及带有<p:watermark>和<p:fileUpload> ,如下所示: <p:layout> <p:layoutUnit position="west" size="100">Test</p:layoutUnit> <p:layoutUnit position="center"> <h:form enctype="multipart/form-data"> <p:inputText id="input" /> <p:watermark for="input" value="watermark" /> <p:focus for="input" /> <p:fileUpload/> <p:commandButton value="submit" /> </h:form> </p:layoutUnit> </p:layout> 它列出了以下可能被推迟的JavaScript文件: primefaces.js (219.5KiB) jquery-plugins.js (191.8KiB) jquery.js (95.3KiB) layout.js (76.4KiB) fileupload.js (23.8KiB) watermark.js (4.7KiB) 它链接到这个Google Developers文章,其中介绍了延迟加载以及如何实现它。 您基本上需要在window的onload事件期间dynamic创build所需的<script> 。 在最简单的forms下,旧的和bug的浏览器完全被忽略,看起来像这样: <script> window.addEventListener("load", function() […]
我有多种forms,我有必填字段和可选字段。 要提交这样一个表单,我需要对需要执行的属性进行validation,这很好。 要取消这种forms,我使用p:commandbutton上的属性immediate="true" ,这使得它的行为发生在Apply Request Values -Phase期间,如下所示: 当单击一个特定的button时如何跳过validation? 但是,对于大型表单,我想为用户提供一个Save-Button,所以他可以稍后进行。 为了保存当前状态,我也想忽略必需属性的validation。 但是,使用immediate="true"不起作用,因为那么我的save方法简单地不会保存任何内容,因为JSF生命周期永远不会碰到“UpdateModelValues”-Phase。 (根据http://www.javacodegeeks.com/2012/01/jsf-and-immediate-attribute-command.html ) 那么,如何绕过必需的检查,但不跳过生命周期的一半呢?
当我inputURL后运行我的应用程序,这个exception即将到来。我使用Eclipse和Tomcat7.0.35。 我还添加了Jstl.jar和jstl1.2.jar 我的代码是 java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) at org.apache.myfaces.view.jsp.JspViewDeclarationLanguage.buildView(JspViewDeclarationLanguage.java:91) at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:78) at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:241) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:199) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
我希望看到一个简单的login应用程序,但不是这样简单。 我想实现的是对JSF如何工作的理解,我已经开发了大量的ASP.NET代码,你可以在这里检查是否在login时创build了一个会话。 JSF中的类似解决scheme将会很好。 这基本上是我想要实现的: login页面 如果确定 创build会话并返回“成功” 如果失败 返回“失败” (“成功”和失败映射到faces-config.xml) 在成功页面上,我想确保用户已经login,所以如果您没有正确的会话,就不能导航到“success.jspx”。
我可以将一个input文本字段值传递给一个bean方法,而不需要将该值绑定到一个bean属性上? <h:inputText value="#{myBean.myProperty}" /> <h:commandButton value="Test" action="#{myBean.execute()} /> 我可以这样做,而不是暂时保存在#{myBean.myProperty} ?
这是我的forms: <form action="j_security_check"> <h:panelGrid columns="2" bgcolor="#eff5fa" cellspacing="5" frame="box" styleClass="center"> <h:outputLabel value="User ID:"/> <h:inputText id="j_username" tabindex="1" /> <h:outputLabel value="Password:"/> <h:inputSecret id="j_password"/> <h:outputLabel value=""/> <h:commandButton id="login" value="Login"/> </h:panelGrid> </form> Glassfish 3.0.1可以正常工作,但是由于Glassfish 3.1 b2在JSF页面中将这个警告显示为一个FacesMessage : 表单组件在其祖先中需要有一个UIForm。 build议:在<h:form>包含必要的组件 如果我将<form action="j_security_check">更改为<h:form> ,它不会修复它,我必须将<h:form>放在<h:panelGrid> 。
假设URL是http:// localhost:8080 / project-name / resource.xhtml , 我想在JSF托pipebean中获得以下http:// localhost:8080 / project-name 。
我使用Primefaces使我的应用程序更漂亮一点。 我注意到, p:commandButton和h:commandButton工作方式不一样。 p:commandButton调用这个方法,没有别的东西需要处理。 h:commandButton调用该方法并返回一个导航。 使用p:commandButton时,按下loginbutton后redirect时遇到问题。 如何处理? 我有一个更新参数: <p:commandButton value="Login" action="#{login.login}" type="submit" update="msgs" />
我收到这些消息: 将不可序列化的属性值设置为ViewMap:(key:MyBackingBean,值类:foo.bar.org.jsf.MyBackingBean)|#] 这是否意味着我的JSF支持bean应该实现Serializable? 还是他们提到其他一些问题呢?