【问题标题】:Unable to pass boolean in URL无法在 URL 中传递布尔值
【发布时间】:2013-12-29 16:15:48
【问题描述】:

我有 2 页,inputForm.xhtml 和 outputPage.xhtml。

在inputForm.xhtml 中,有 1 个文本字段和 1 个复选框。当用户点击提交按钮时,会将值传递给 URL 中的outputPage.xhtml。

textfield的值可以正确传递。但是,无论是否选中复选框,URL中的参数始终为false。

例如http://localhost:8080/jsf-web/outputPage.xhtml?c=false&n=franz

我正在使用 myFaces 2.1.13。我真的不知道如何解决这个问题。谢谢。

inputForm.xhtml

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html">

<f:metadata>
    <f:viewParam name="n" value="#{inputFormBean.name}" />
    <f:viewParam name="c" value="#{inputFormBean.nameUppercase}" />
</f:metadata>

<h:head>
</h:head>
<h:body>
    <h:form>
        <p>Name: <h:inputText value="#{inputFormBean.name}" /></p>
        <p>Name uppercase: <h:selectBooleanCheckbox value="#{inputFormBean.nameUppercase}"/></p>
        <p><h:commandButton action="output_page" value="Submit" /></p>
    </h:form>
</h:body>
</html>

outputPage.xhtml

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html">

<f:metadata>
    <f:viewParam name="n" value="#{outputPageBean.name}" />
    <f:viewParam name="c" value="#{outputPageBean.nameUppercase}" />
</f:metadata>

<h:head>
</h:head>
<h:body>
    <h3>Welcome #{outputPageBean.nameUppercase ? outputPageBean.name.toUpperCase() : outputPageBean.name}!!</h3>
</h:body>
</html>

faces-config.xml

<?xml version="1.0"?>
<faces-config xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd" 
    version="2.0">

    <navigation-rule>
        <from-view-id>*</from-view-id>
        <navigation-case>
            <from-outcome>output_page</from-outcome>
            <to-view-id>/outputPage.xhtml</to-view-id>
            <redirect include-view-params="true"/>
        </navigation-case>
    </navigation-rule>
</faces-config>

InputFormBean.java

package com.franzwong.jsfweb;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean
@RequestScoped
public class InputFormBean {
    private String name;
    private boolean nameUppercase;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public boolean isNameUppercase() {
        return nameUppercase;
    }
    public void setNameUppercase(boolean nameUppercase) {
        this.nameUppercase = nameUppercase;
    }
}

OutputPageBean.java

package com.franzwong.jsfweb;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean
@RequestScoped
public class OutputPageBean {
    private String name;
    private boolean nameUppercase;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public boolean isNameUppercase() {
        return nameUppercase;
    }
    public void setNameUppercase(boolean nameUppercase) {
        this.nameUppercase = nameUppercase;
    }
}

【问题讨论】:

    标签: jsf jsf-2 myfaces


    【解决方案1】:

    最后我尝试了原始 int,无论我输入什么值,它都作为 0 传递。

    因此,我尝试了Boolean、Integer,发现我输入的值可以在URL中正确传递。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 2021-05-20
      • 2021-06-08
      • 2021-07-19
      • 2020-05-21
      • 1970-01-01
      • 2014-10-14
      相关资源
      最近更新 更多