【问题标题】:JSF redirect from page to pageJSF 从一个页面重定向到另一个页面
【发布时间】:2012-08-29 07:20:57
【问题描述】:

我对 JSF 1.1 有疑问(我知道是恐龙)

所以有两个页面 - index.jsp 和 test.jsp 单击“创建”按钮后,我想从 index.jsp 重定向到 test.jsp

但什么也没发生:/

附言而且,一般来说,我如何记录那里的东西,知道甚至没有点击事件的日志!太可怕了

index.jsp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%-- jsf:pagecode language="java" location="/src/pagecode/Index.java" --%><%-- /jsf:pagecode --%>
<%@page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>

<html>
<head>
<title>index</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="GENERATOR" content="IBM WebSphere Integration Developer 6.2">
<link rel="stylesheet" type="text/css" title="Style"
    href="theme/stylesheet.css">
</head>
<f:view>
    <body>
    <h:panelGrid columns="1" width="12%" cellpadding="10" rendered="true">

        <h:commandButton value="Create" action="#{Controller.create}" />
    </h:panelGrid>

    </body>
</f:view>
</html>

Controller.java

public class Controller extends PageCodeBase {


    public String create() {
        return "success";
                 }

}

faces-config.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE faces-config PUBLIC
    "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
    "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">

<faces-config>
    <managed-bean>
        <managed-bean-name>Controller</managed-bean-name>
        <managed-bean-class>pagecode.Controller</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>


    <navigation-rule>
        <display-name>index</display-name>
        <from-view-id>/index.jsp</from-view-id>
        <navigation-case>
            <from-outcome>success</from-outcome>
            <to-view-id>/test.jsp</to-view-id>
            <redirect />
        </navigation-case>
    </navigation-rule>
</faces-config>

web.xml

<welcome-file-list>

        <welcome-file>index.jsp</welcome-file>
        <welcome-file>test.jsp</welcome-file>
</welcome-file-list>

【问题讨论】:

    标签: jsf navigation


    【解决方案1】:

    JSF &lt;h:commandButton&gt; 生成一个 HTML &lt;input type="submit"&gt; 元素,该元素仅在嵌套在其 JSF 等效项为 &lt;h:form&gt; 的 HTML &lt;form&gt; 元素中时才有效。

    但是,您的视图中没有&lt;h:form&gt;。相应地添加它:

    <h:form>
        <h:commandButton value="Create" action="#{Controller.create}" />
    </h:form>
    

    顺便说一句,如果您的所有create 方法所做的只是返回一个固定的结果,那么您也可以直接在action 属性中指定结果:

    <h:form>
        <h:commandButton value="Create" action="success" />
    </h:form>
    

    顺便说一句,使用 POST 进行页面到页面导航是一种不好的做法,您应该更喜欢输出链接。

    另见:

    【讨论】:

      【解决方案2】:

      create 方法应该返回一个字符串。此字符串是您要重定向的页面的路径。 替换:

      return "success";
      

      为:

      return "yourpage"
      

      【讨论】:

      • OP 正在使用 JSF 1.1。您的回答仅在使用 JSF 2.0“隐式导航”功能时适用。
      • @BalusC,抱歉我没有注意到。感谢您的警告。
      猜你喜欢
      • 2016-12-14
      • 1970-01-01
      • 2015-08-14
      • 2014-02-17
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      • 2021-06-24
      • 2014-09-01
      相关资源
      最近更新 更多