为什么我不能用jsf获取url参数?

时间:2011-04-20 15:01:03

标签: java jsf

我使用jsf 1.x.我不明白我的代码在哪里错了。

面-config.xml中

<managed-bean>
  <managed-bean-name>mainNavigationParametersHandlerBean</managed-bean-name>
  <managed-bean-class>com.test.MainNavigationParametersHandlerBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
  <managed-property>
   <property-name>userType</property-name>
   <property-class>java.lang.String</property-class>
   <value>#{param.userType}</value>
  </managed-property>
 </managed-bean>

我的豆子:

package com.test;

public class MainNavigationParametersHandlerBean {
    // url parameters
    private String userType = "";

    public String getUserType() {
        return userType;
    }

    public void setUserType(String userType) {
        this.userType = userType;
    }
}

我的jsp页面(实际上它使用来自jsf文件的内容):

<jsp:root
    xmlns:jsp="http://java.sun.com/JSP/Page"
    xmlns:c="http://java.sun.com/jstl/core"
    version="1.2">
    <head>
    </head>
    <body>   
        <jsp:forward page="/WEB-INF/jsf/userapp-main.jsf" />        
    </body>
</jsp:root>

在userapp-main.jsf中我有一个标题,我想打印出这个url的userType参数的值:

http://localhost:8080/index-userapp.jsp?userType=grav

但是,在我的xhtml页面中,#{mainNavigationParametersHandlerBean.userType}似乎是空的......

你明白为什么吗?

感谢。

1 个答案:

答案 0 :(得分:0)

在浏览器中右键单击打开的页面,然后选择查看源。您是否在HTML中看到生成的JSF标记的HTML输出或未解析的JSF标记?我敢打赌,这是后者。

您的JSP方法有点奇怪。我只是将userapp-main.jsp页面的内容放在index-userapp.jsp页面内,然后通过一个与FacesServlet中定义的web.xml的网址格式相匹配的网址调用该页面。如果是*.jsf,那么您需要按http://localhost:8080/index-userapp.jsf?userType=grav打开页面。

如果有空间,我也会考虑升级。 JSP 1.2非常古老(已有10年历史),它目前处于2.2,它的继任者Facelets已经在大约1。5年前发布的Java EE 6中占据了一席之地。