我有这个可选择的PrimeFaces树,在我的索引中选择Ajax侦听器.xhtml:
<p:tree value="#{seccionesArbolView.root}" var="node" selectionMode="single" >
<p:treeNode>
<h:outputText value="#{node.nombre}" />
</p:treeNode>
<p:ajax event="select" listener="#{seccionesArbolView.onNodeSelect}"></p:ajax>
</p:tree>
侦听器方法位于名为 bean 的会话范围内,并且应重定向到具有一些 GET 参数的另一个页面 (grupal.xhtml)。我试过这个:
public String onNodeSelect(NodeSelectEvent event) throws IOException {
Seccion sec = (Seccion) event.getTreeNode().getData();
String enlace = "grupal.xhtml?faces-redirect=true&id=" + sec.getId() + "&nombre=" + sec.getNombre();
return enlace;
}
但是什么都没有发生。我在另一个问题中读到这可能是因为Ajax请愿书,所以我尝试了ExteralContext:
public String onNodeSelect(NodeSelectEvent event) throws IOException {
Seccion sec = (Seccion) event.getTreeNode().getData();
FacesContext context = FacesContext.getCurrentInstance();
String enlace = "faces/grupal.xhtml?id=" + sec.getId() + "&nombre=" + sec.getNombre();
context.getExternalContext().redirect(enlace);
context.responseComplete();
}
这种方法的问题在于链接的构造。它的工作方式(带有“face”前缀)是有效的,但是每次单击树时,URL都会不断变大,并且添加了另一个“face/”(例如http://localhost:8080/MyApp/faces/faces/faces/grupal.xhtml?...),并且Glassfish发出警告请求路径“/face/face/grupal.xhtml”以一个或多个FacesServlet前缀路径映射“/faces”的出现开始
如果链接的构造不带“faces/”前缀:
String enlace = "grupal.xhtml?id=" + sec.getId() + "&nombre=" + sec.getNombre();
如果通过URL http://localhost:8080/MyApp/faces/index . XHTML访问index.xhtml,它就可以工作。但是当通过基本URL http://localhost:8080/MyApp/访问index.xhtml时,显然无法找到grupal.xhtml。
我不确定在这种情况下什么是最好的解决方案。
有没有办法用JSF 2.0导航(第一种方法,我无法开始工作)来做到这一点?
有没有办法获取整个基本URL以使用绝对路径进行重定向?
有没有办法告诉Glassfish将基本URLhttp://localhost:8080/MyApp/重定向到http://localhost:8080/MyApp/faces/index.xhtml?
我试过这个:
return enlace;
但什么也没发生。
您确实不能从listener
/actionListener
方法导航。您只能从action
方法导航。
< br >
有没有办法用JSF 2.0导航(第一种方法,我无法开始工作)来做到这一点?
您可以使用导航处理程序#handleNavigation()
以编程方式执行导航。
public void onNodeSelect(NodeSelectEvent event) {
// ...
String outcome = "grupal.xhtml?faces-redirect=true&id=" + sec.getId() + "&nombre=" + sec.getNombre();
FacesContext context = FacesContext.getCurrentInstance();
context.getApplication().getNavigationHandler().handleNavigation(context, null, outcome);
}
< br >
有没有办法获取整个基本URL以使用绝对路径进行重定向?
您可以使用ExteralContext#getRequest estContextPath()
以编程方式获取上下文路径。
public void onNodeSelect(NodeSelectEvent event) throws IOException {
// ...
String uri = "/faces/grupal.xhtml?id=" + sec.getId() + "&nombre=" + sec.getNombre();
ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
ec.redirect(ec.getRequestContextPath() + uri);
}
< br >
有没有办法告诉Glassfish将基本URLhttp://localhost:8080/MyApp/重定向到http://localhost:8080/MyApp/faces/index.xhtml?
使用<代码>
在http://www.gebish.org/manual/current/API/geb/navigator/navigator.html中,我对navigator API使用的语言有点困惑 在particualr中,我对.isShopping方法感到困惑。 方法文档声明:“如果显示唯一上下文元素,则返回true;对于空导航器,则返回false。不能在多元素导航器上调用。” 问题是,如果我在空导
我有一个基本回收适配器,如下所示: : 基本视图保持架为: 假设ViewHolder有两个视图,一个TextView和一个ImageView。如何对ViewHolder的itemview中的所有项目实现ClickListener
我试图用我的键控制火箭动画,并尝试使用KeyListener方法,然而,我的程序对我的按键没有反应。我尝试将keylistener添加到我的JFrame,但它没有调用它,因为JFrame是一个单独的静态方法。如果你运行它,你将没有图像,但是,如果你运行,请替换为矩形。你能说出我的错误吗。提前谢了。 下面是我的代码:
我正在处理一些奇怪的遗留代码。他们有一个实现JPanel的自定义对象。这个< code>JPanel对象是主应用程序中的第二个弹出屏幕。我遇到的问题是检测辅助弹出屏幕何时关闭。 我尝试为该类实现一个,但是当我尝试添加它时,没有与此对象关联的。我假设这是因为他们正在使用一个自定义对象,它是一个嵌入式弹出屏幕。 我尝试使用以下命令检索: 这在上失败。我不知道为什么在这个页面上检测右上角的“x”关闭按钮
本文向大家介绍SpringBoot定义过滤器、监听器、拦截器的方法,包括了SpringBoot定义过滤器、监听器、拦截器的方法的使用技巧和注意事项,需要的朋友参考一下 一、自定义过滤器 创建一个过滤器,实现javax.servlet.Filter接口,并重写其中的init、doFilter、destory方法。 二、自定义监听器 创建一个过滤器,实现ServletContextListener接口
问题:自定义的MyRetryListener,想在@Retryable中指定使用,现在却变成了不指定也会调用 显现:现在直接写@Retryable不声明listeners 也会走到MyRetryListener中去 希望结果,只在注解中指定了listeners = {"myRetryListener"}的时候调用MyRetryListener中的方法