首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Get params Get all params导航

使用Get params Get all params导航
EN

Stack Overflow用户
提问于 2012-03-20 23:50:45
回答 1查看 188关注 0票数 1

我传递了三个字段,但只传递了第一个,尽管构建的URL显示了正确的值:

TestBean1:

代码语言:javascript
复制
@ManagedBean
@RequestScoped
public class TestBean1 implements Serializable  {


private String field1;
private String field2;
private String field3;

// Constructor
public TestBean1() {

}

public void handleRequest() throws IOException {

    setField1("1 Julie");
    setField2("2 Kyle");
    setField3("3 Bob");

    String field1 = URLEncoder.encode(this.field1, "UTF-8");
    String field2 = URLEncoder.encode(this.field2, "UTF-8");
    String field3 = URLEncoder.encode(this.field3, "UTF-8");     

    String url = "Bean2.jsf?field1=" + field1 + "&field2=" + field2
                + "&field3=" + field3;

      FacesContext.getCurrentInstance().getExternalContext().redirect(url); 

}

// Getter and Setters
public String getField1() {
    return field1;
}

public void setField1(String field1) {
    this.field1 = field1;
}
public String getField2() {
    return field2;
}

public void setField2(String field2) {
    this.field2 = field2;
}

public String getField3() {
    return field3;
}

public void setField3(String field3) {
    this.field3 = field3;
}

  }

Bean1.jsf

代码语言:javascript
复制
  <ui:composition 

 xmlns="http://www.w3.org/1999/xhtml"
 xmlns:f="http://java.sun.com/jsf/core"
 xmlns:ui="http://java.sun.com/jsf/facelets"
 xmlns:h="http://java.sun.com/jsf/html"
 xmlns:p="http://primefaces.org/ui"
 template="/templates/template.xhtml">


<ui:define name="title">
    Bean 1
</ui:define>

  <ui:define name="content">

  <h:body>

<h:form>
  <table>
    <tr>        <td>Bean 1 </td>            </tr>
    <tr>        <td> </td>              </tr>
    <tr>        <td> </td>          </tr>
    <tr>        <td><h:commandLink value="Submit" action="#
                                    {testBean1.handleRequest}" /> </td>     </tr>
</table>

</h:form>   
  </h:body>
  </ui:define>  
  </ui:composition> 

Bean2.jsf

代码语言:javascript
复制
  <ui:composition 

 xmlns="http://www.w3.org/1999/xhtml"
 xmlns:f="http://java.sun.com/jsf/core"
 xmlns:ui="http://java.sun.com/jsf/facelets"
 xmlns:h="http://java.sun.com/jsf/html"
 xmlns:p="http://primefaces.org/ui"
 template="/templates/template.xhtml">

 <f:metadata>
 <f:viewParam name="field1" value="#{testBean2.field1}"/>
 <f:viewParam name="field2" value="#{testBean2.field2}"/>
 <f:viewParam name="field3" value="#{testBean2.field3}"/>
 </f:metadata>

<ui:define name="title">
    Bean 2
</ui:define>

 <ui:define name="content">

 <h:body>

<h:form>

<table>
    <tr>    <td>Bean 2 </td> </tr>
    <tr>    <td><h:inputText id="Input" value="#{testBean2.myInput}"/>  </td> /tr>      <tr>    <td> </td>  </tr>
    <tr>    <td> <h:outputText value="#{testBean2.field1}"    />  </td>     </tr>
    <tr>    <td> <h:outputText value="#{testBean2.field2}" />    </td>      </tr>
    <tr>    <td> <h:outputText value="#{testBean2.field3}" />    </td>      </tr>
    <tr>    <td> <h:commandLink value="Click" 
                       action="#{testBean2.handleRequest}" /> </td> </tr>

     </table>

</h:form>   
   </h:body>
   </ui:define> 
   </ui:composition>

TestBean2

代码语言:javascript
复制
     @ManagedBean
     @ViewScoped
     public class TestBean2  implements Serializable  {

private static final long serialVersionUID = -9L;

private String field1;
private String field2;
private String field3;

private String myInput = "Hello";


// Constructor
public TestBean2 () {
}

public void handleRequest() {

    System.out.println("field1 " + field1  + "  field2 " + field2 + "  field3 " + 
                    field3);

}


// Getter and Setters

    public String getField1() {
        return field1;
    }

    public void setField1(String field1) {
        this.field1 = field1;
    }
    public String getField2() {
        return field2;
    }

    public void setField2(String field2) {
        this.field2 = field2;
    }

    public String getField3() {
        return field3;
    }

    public void setField3(String field3) {
        this.field3 = field3;
    }

public String getMyInput() {
    return myInput;
}

public void setMyInput(String myInput) {
    this.myInput = myInput;
}

   }

当我运行它时,我只得到了field1的值。

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-21 00:08:12

在模板客户端中,<f:metadata>需要进入<ui:define>内部,否则行为是不确定的。另请参阅the documentation of the tag获取示例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9790185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档