gpt4 book ai didi

java - includeViewParams=true 在模板页面中不起作用

转载 作者:搜寻专家 更新时间:2023-11-01 03:55:18 24 4
gpt4 key购买 nike

考虑这个模板:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<f:view contentType="text/html">
<ui:insert name="metadata"/>
<h:head>
<title></title>
</h:head>
<h:body>
<ui:insert name="content"/>
</h:body>
</f:view>
</html>

使用它的页面 (/pages/test.xhtml):

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<f:view contentType="text/html">
<h:head>
<title></title>
</h:head>
<h:body>
<ui:composition template="/WEB-INF/templates/testLayout.xhtml">
<ui:define name="metadata">
<f:metadata>
<f:viewParam name="foobar" value="#{pageBean.foo}"/>
</f:metadata>
</ui:define>
<ui:define name="content">
<h:form>
<h:commandLink value="Click"
action="#{util.currentPageAction()}"/>
</h:form>
</ui:define>
</ui:composition>
</h:body>
</f:view>
</html>

页面的bean:

@Named
@RequestScoped
public class PageBean implements Serializable
{
public String getFoo()
{
return foo;
}

public void setFoo(String foo)
{
this.foo = foo;
}

private String foo;
}

还有这个 bean :

@Named
@ApplicationScoped
public class Util implements Serializable
{
public String currentPageAction()
{
return FacesContext.getCurrentInstance().getViewRoot().getViewId() +
"?faces-redirect=true&includeViewParams=true";
}
}

当我加载 http://localhost:8080/faces/pages/test.xhtml?foo=bar在浏览器中单击 <h:commandLink/> ,URL 更改为 http://localhost:8080/faces/pages/test.xhtml .也就是说, View 参数不包含在重定向 URL 中。

但是,当我重构页面使其不使用模板时,它的行为符合预期。也就是说, View 参数包含在重定向 URL 中。

我明白 <f:metadata/>当放置在 facelets 模板中时,不会也不应该工作。这不是这里发生的事情,所以这是一个不同的问题。规范中没有任何内容表明无法做到这一点。实际上,(据我所知)没有其他方法可以创建带有 View 参数的基于模板的页面。

最佳答案

我有一个类似的问题,我将其解决为定义“元数据”集元数据在 f:view 之后立即注入(inject)

<ui:define name="metadata">
<f:metadata>
<f:viewParam name="id" .../>
</f:metadata>
</ui:define>

模板.xhtml

        <html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xml:lang="en" lang="en">
<f:view>
<ui:insert name="metadata"/>
<div id="container">
<ui:insert name="content"/>
</div>
</f:view>

关于java - includeViewParams=true 在模板页面中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9080951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com