是什么区别action
和actionListener
,什么时候应该使用action
与actionListener
?
我用容器管理的安全性编写了简单的应用程序.问题是当我登录并打开另一个我注销的页面时,然后我回到第一页,我点击任何链接等或刷新页面我得到这个例外.我想这是正常的(或者可能不是:))因为我退出了会话被破坏了.我该怎么做才能将用户重定向到例如index.xhtml或login.xhtml,并使他免于看到错误页面/消息?
换句话说,如何在我退出后自动将其他页面重定向到索引/登录页面?
这里是:
javax.faces.application.ViewExpiredException: viewId:/index.xhtml - View /index.xhtml could not be restored.
at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:212)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:110)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
at filter.HttpHttpsFilter.doFilter(HttpHttpsFilter.java:66)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:277)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
at java.lang.Thread.run(Thread.java:619)
Run Code Online (Sandbox Code Playgroud) 任何人都可以澄清我们如何在一般情况下使用,或者在现实世界中使用这个代码片段?
<f:metadata>
<f:viewParam id="id" value="#{bean.id}" />
<f:viewAction action="#{bean.init}" />
</f:metadata>
Run Code Online (Sandbox Code Playgroud) 我什么时候应该使用<h:outputLink>
而不是<h:commandLink>
?
我知道a commandLink
生成一个HTTP帖子; 我猜这outputLink
将产生HTTP获取.也就是说,我读过的大多数JSF教程材料都是commandLink
(几乎?)使用的.
上下文:我正在实现一个小的演示项目,它显示了一个到用户页面的标题链接,就像Stack Overflow的......
......我不确定commandLink
(可能是?faces-redirect=true
用于书签)还是outputLink
正确的选择.
在JSF 2中,h:button
和之间有什么区别h:commandButton
?
Mojarra JSF 2的实现具有以下上下文参数:
com.sun.faces.numberOfViewsInSession
(默认为15)com.sun.faces.numberOfLogicalViews
(默认为15)他们之间有什么区别?文档中没有提到这些内容.我的应用程序在ViewExpiredException
某些页面遇到问题,但在我们将这些设置提高到(更高)值后,我们就停止了问题.
我的应用程序是一个财务,重量级,支持Ajax的应用程序(有些屏幕有50多个输入,可以选择通过AJAX添加更多数据/输入).
这种行为可能是什么原因?我知道第一个参数定义了会话中保存的"页面"的数量,这对于后退按钮可能很有用,但我触发的用例ViewExpiredException
不使用后退按钮.第二个参数是指什么?如果我保持在同一个屏幕但通过AJAX继续添加大量数据,这是否会导致需要更多的逻辑视图用于页面?
我正在学习JSF 2,感谢我在这么短的时间里学到了很多东西.
我的问题是关于如何为我的所有JSF 2页面实现一个公共布局,并且每当我从另一个面板单击一个链接/菜单时,只有页面的内容部分不刷新整个页面.我使用Facelets方法它做了我想做的事情,除了每次我点击一个面板的链接(例如左面板的菜单项)时,整个页面都会刷新.我正在寻找的是一种只刷新页面内容部分的方法.为了说明这一点,我的目标是pagelayout.
没有发布我的代码,因为我不确定Facelets是否可以这样做.除了Facelets之外,还有其他方法更适合我的要求吗?
JSF中的导航有什么区别
FacesContext context = FacesContext.getCurrentInstance();
context.getApplication().getNavigationHandler().handleNavigation(context, null, url);
Run Code Online (Sandbox Code Playgroud)
和重定向
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
response.sendRedirect(url);
Run Code Online (Sandbox Code Playgroud)
以及如何决定何时使用什么?
导航问题是页面URL不会更改,除非faces-redirect=true
添加到导航URL的查询字符串中.但是,在我的情况下,faces-redirect=true
如果我想重定向到像纯HTML页面这样的非JSF页面,则会附加throws错误.
另一种选择是BalusC在JSF 2.0重定向错误中提出的建议
我在一个字段上有一个带验证器的表单.我有两个h:commandButton
s:Ok和Cancel.当我输入错误的数据并单击取消时,我会收到验证消息.当我点击取消时,我必须做什么验证器不运行?
我已经开始学习JSF,但遗憾的是,大多数教程只提供登录或注册部分.
你能指点我一些更深入的例子吗?我感兴趣的一件事是一个展示产品清单的页面.我在页面回家,我按下页面产品,以便我可以看到添加的最新产品.每次访问该页面时,都会根据数据库中的最新条目创建产品列表.我怎么处理这个?
解决此问题的一种方法是创建一个会话范围的托管bean,在其中我将通过其他托管bean更新不同的实体.我在一些教程中发现了这种方法,但它看起来很困难而且很笨拙.
哪个是解决这类问题的最佳方法?在两页主从细节用户界面中,会话范围的正确用法是什么?
jsf ×9
jsf-2 ×8
button ×2
action ×1
ajax-update ×1
facelets ×1
forward ×1
logout ×1
mojarra ×1
navigation ×1
redirect ×1
scope ×1
session ×1
uiinclude ×1
validation ×1
viewaction ×1
viewparams ×1
viewstate ×1