用动态值Java替换html文本

时间:2012-07-31 17:38:00

标签: java jsf-2

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

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

其中String outcome =“home \ login.jsf”

3 个答案:

答案 0 :(得分:1)

您需要使用EL(如JSTL)在那里渲染字符串。

示例JSTL是:

<a href=#{outcome}> with <a href=\ outcome \">

答案 1 :(得分: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子句在您的defiend规则中使用条件导航:

<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的方法。如果方法返回String,则可以返回“#”或导航规则,隐式导航或配置的规则:

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

将从您的Bean调用logIn方法:

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

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

答案 2 :(得分:0)

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

  <h:commandLink value="#{..}" action="#{yourBean.yourMethod()}"/>