0

如何在java中用动态值替换HREF值

  <a href=\"http://www.example.com\"> with <a href=\ outcome \">

其中字符串结果 =“home\login.jsf”

4

3 回答 3

1

您需要使用 EL(如 JSTL)在此处呈现字符串。

示例 JSTL 是:

<a href=#{outcome}> with <a href=\ outcome \">
于 2012-07-31T17:39:09.223 回答
1

可能有不同类型的结果。如果您使用纯 HTML 或 h:outputLink 和 h:link 等组件,则 EL 表达式将在呈现页面时被解释,而不是 100% 动态。

<h:link outcome="#{bean.link}" value="I go to a page!"/>

将产生一个<a>标签,其链接指定#{bean.link}为 href。

此外,在 JSF 2.x 中,您可以通过添加引用 bean 属性的 if 子句在您的防御规则中使用条件导航:

<navigation-rule>
    <from-view-id>index.xhtml</from-view-id>
    <navigation-case>
        <from-outcome>logIn</from-outcome>
        <if>#{sessionBean.sessionActive}</if>
        <to-view-id>userDashboard.xhtml</to-view-id>
        <else if>#{sessionBean.rejectedUser}</else if>
            <to-view-id>index.xhtml</to-view-id>
        <else>
            <to-view-id>register.xhtml</to-view-id>
    </navigation-case>
</navigation-rule>

另一方面,像 h:commandButton 和 h:commandLink 这样的元素有一个 action 属性,它引用返回类型为 String 或 void 的方法。如果方法返回字符串,那么您可以返回“#”或导航规则,隐式导航或配置规则:

<h:commandLink value="Log In" action="#{bean.logIn}"/>

logIn 方法将从您的 Bean 调用:

public String logIn() {
    //Your login logic
    if(userIsLoggedIn) {
        return "userDashboard"; //Implicit navigation
    } else {
        return "index"; //Implicit navigation
    }
}

隐式导航 (JSF 2.x) 将允许您通过返回页面名称在同一文件夹中的页面之间导航。例如,返回index会将用户发送到index.jsf.

于 2012-07-31T17:59:36.567 回答
0

将“a”标签替换为“h:commandLink”标签。并根据需要绑定值和操作。

  <h:commandLink value="#{..}" action="#{yourBean.yourMethod()}"/>
于 2012-08-01T05:14:25.090 回答