JSF 中h:link 和h:commandLink和 h:outputLink之间的区别

h:link  采用静态导航规则(所谓静态导航就指应用程序动作的逻辑结果字符串是用硬编码的形式给出的)。在outcome属性中设置导航的逻辑结果字符,不能用action。刻逻辑结果字符会去匹配一个相对应的结果页面。这会根据faces-config.xml或者页面的名来进行匹配。

h:commandLink  它比较h:link多一人功能,就是它可用action来进行动态导航,但它要用于h:form。

h:outputLink  它就是在value中直接来设置键接的路径。

示例

目录结构build.xml

<?xml version="1.0" encoding="UTF-8" ?>
<project name="" basedir="../" default="">
   <target name="init" description="">
    <mkdir dir="web/WEB-INF/classes"/>
    <mkdir dir="web/WEB-INF/lib"/>
    <mkdir dir="web/resources"/>
    <mkdir dir="src/com/liang/test"/>
    <touch file="src/com/liang/test/Login.java"/>
    <touch file="web/WEB-INF/web.xml"/>
    <touch file="web/WEB-INF/faces-config.xml"/>
    <touch file="web/login.xhtml"/>
    <touch file="web/welcome.xhtml"/>
    <mkdir dir="web/META-INF"/>
    <touch file="web/META-INF/context.xml"/>
   </target>
</project>

Login.java

 1 package com.liang.test;
 2 
 3 public class Login{
 4 
 5     public Login(){}
 6 
 7     public String goWelcome(){
 8 
 9     return "welcome";
10     }
11 
12 }

faces-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="2.2"
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
    http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">

    <managed-bean>
    <managed-bean-name>login</managed-bean-name>
    <managed-bean-class>com.liang.test.Login</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>
</faces-config>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">

    <servlet>
        <servlet-name>JSF</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>    

    <servlet-mapping>
        <servlet-name>JSF</servlet-name>
        <url-pattern>*.faces</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>JSF</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>
</web-app>

login.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core">
<f:view>
<head>
<style type="text/css">
ul li{list-style:none;}
.lititle{color:blue;font-size:24px;list-style:circle;}
</style>
</head>

<body>
    <ul>
    <li class="lititle">&#160;&#160;h:link测试</li>
    <li><h:link value="welcome" outcome="welcome"/></li><br/>
    <li> 
    <h:link  outcome="welcome">
        <h:graphicImage library="pic" name="beauty.gif" title="welcome"/>
    </h:link></li>

    <li><h:link value="welcome" outcome="welcome">
        <f:param value="hello" name="hi"/>
        </h:link></li>
    <br/>
    <li class="lititle">&#160;&#160;h:commandLink测试</li>
    <h:form>
    <li>
        <h:commandLink action="#{login.goWelcome}" value="welcome"/>
    </li>
    <li>
        <h:commandLink action="#{login.goWelcome}" >
        <h:graphicImage library="pic" name="beauty.gif" title="welcome"/>
        </h:commandLink>
    </li>
    <li>
       <h:commandLink action="#{login.goWelcome}" value="welcome">
        <f:param name="hi" value="hello"/>
       </h:commandLink>
    </li>
    </h:form>
    <br/>

    <li class="lititle">&#160;&#160;h:outputLink测试</li>
    <li><h:outputLink value="welcome.xhtml">welcome</h:outputLink></li>
    <li><h:outputLink value="welcome.xhtml">
        <h:graphicImage library="pic" name="beauty.gif" title="welcome"/>
        </h:outputLink></li>
    <li></li>
    </ul>
</body>
</f:view>
</html>

welcome.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core">


    <h:head>
        <h:title></h:title>
    </h:head>

    <h:body>
        #{param.hi}&#160;&#160;<h:outputText value="welcome" id="welcome"/>
    </h:body>
    
</html>

login.xhtml的网页页面

完整的实例:

链接:http://pan.baidu.com/share/link?shareid=3720686331&uk=4012897532 密码:6ptk

原文地址:https://www.cnblogs.com/liangjingguo/p/3469758.html