h:与includeViewParams = true的链接并不总是包含viewparams

时间:2014-08-01 15:30:26

标签: jsf

由于某种原因,并不总是将视图参数附加到生成的链接。我无法弄清楚原因。如果我将结果更改为另一个类似的链接,那么它将被正确处理。

有人能指出一些无法满足的要求吗?我在文档中找不到任何相关内容。

我正在尝试设置由单个bean支持的4个视图。这些视图都包含相同的视图参数,但只有其中一个处理它们。所有视图都使用相同的模板。

所以我有所有观点

<f:metadata>
    <f:viewParam name="param1"
                 value="#{bean.param1}"/>
    <f:viewParam name="param2"
                 value="#{bean.param2}"/>
</f:metadata>
<ui:composition template="/onpage/template.xhtml">
// ...

在其中一个中,我加入了<f:viewAction>

在模板中我有一些链接

<h:link outcome="#{bean.outcome1}"
        value="Go to view1"/>
<h:link outcome="#{bean.outcome2}"
        value="Go to view2"/>

并在bean中:

private String param1; // And get/setters
private String param2; // and get/setters
public String getOutcome1() {
 return "/my/path.jsf?some=param&includeViewParams=true";
}
public String getOutcome2() {
 return "/my/path2.jsf?some=param2&includeViewParams=true";
}

通过这种设置,一些链接指向&#34; /my/path.jsf?param1 = value1&amp; param2 = value2&#34;正如所料,而其他人则指向&#34; /my/path2.jsf?some = param2&#34;没有明显的理由,日志中没有任何信息。

所有这些都在glassfish 4 / JSF 2.2 / primefaces 4上运行。

感谢

1 个答案:

答案 0 :(得分:0)

回答部分OP意见:

我发生了什么,我混合了XML命名空间域。使用xmlns:f="java.sun.com/jsf/core的网页工作正常,而使用xmlns:f="xmlns.jcp.org/jsf/core的网页则没有。有关详细信息,请参阅The metadata component needs to be nested within a f:metadata tag. Suggestion: enclose the necessary components within <f:metadata>

注意:JSF 2.2模式使用xmlns:f="xmlns.jcp.org/jsf/core命名空间。