相关疑难解决方法(0)

includeViewParams = true将null模型值转换为查询字符串中的空字符串

给出<p:selectOneMenu>如下.

<f:metadata>
    <f:viewParam name="id" value="#{testManagedBean.id}" converter="javax.faces.Long"/>
</f:metadata>

<p:selectOneMenu value="#{localeBean.language}" onchange="changeLanguage();">
    <f:selectItem itemValue="en" itemLabel="English" />
    <f:selectItem itemValue="hi" itemLabel="Hindi" />
</p:selectOneMenu>

<p:remoteCommand action="#{testManagedBean.submitAction}"
                 name="changeLanguage"
                 process="@this"
                 update="@none"/>
Run Code Online (Sandbox Code Playgroud)

相应的托管bean:

@ManagedBean
@RequestScoped
public final class TestManagedBean {

    private Long id; //Getter and setter.

    public TestManagedBean() {}

    public String submitAction() {
        return FacesContext.getCurrentInstance().getViewRoot().getViewId() + "?faces-redirect=true&includeViewParams=true";
    }
}
Run Code Online (Sandbox Code Playgroud)

指示的参数<f:viewParam>是可选的.例如,使用URL访问页面,如下所示.

https://localhost:8181/Project-war/private_resources/Test.jsf

由于id是可选参数,<p:selectOneMenu>因此如果未按如下方式提供,则将空参数附加到URL(更改语言时).

https://localhost:8181/Project-war/private_resources/Test.jsf?id=

这不应该发生.如果未提供空参数,则不应附加空参数,并且URL应与第一个类似.

有没有办法防止空参数被传递到URL时没有传递?


这仅与<f:viewParam>- 指定的转换器相关联javax.faces.Long.

如果删除此转换器,则在未提供参数的情况下,参数不会附加到URL.

虽然完全没有必要指定转换器,但我有如下所示的转换器将id通过URL作为查询字符串参数传递给JPA实体.

@ManagedBean
@RequestScoped
public final class …
Run Code Online (Sandbox Code Playgroud)

jsf viewparams jsf-2.2

8
推荐指数
1
解决办法
1714
查看次数

标签 统计

jsf ×1

jsf-2.2 ×1

viewparams ×1