如何在java中用动态值替换HREF值
<a href=\"http://www.example.com\"> with <a href=\ outcome \">
其中字符串结果 =“home\login.jsf”
您需要使用 EL(如 JSTL)在此处呈现字符串。
示例 JSTL 是:
<a href=#{outcome}> with <a href=\ outcome \">
可能有不同类型的结果。如果您使用纯 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
.
将“a”标签替换为“h:commandLink”标签。并根据需要绑定值和操作。
<h:commandLink value="#{..}" action="#{yourBean.yourMethod()}"/>