如何从 JSF 中的 javascript 函数获取 h:link 的结果值?
How to get an outcome value of h:link from javascript function in JSF?
我有一个 h:link
这样的元素
<h:link outcome="/overview.xhtml?source=menu"
title="Overview">
<div>...</div>
</h:link>
我想根据 JavaScript.
中的 MobileMatcher
添加一个布尔变量 phone
到 URI 地址
换句话说,我想这样设置结果:
<h:link outcome="getOverviewURI()"
title="Overview">
<div>...</div>
</h:link>
其中 getOverviewURI()
是返回字符串 URI 的函数:
function getOverviewURI() {
let URI = '/overview.xhtml?phone=';
URI += MobileMatcher.isMobile() ? "true" : "false";
return URI;
}
然而 h:link
需要一个实际的字符串并忽略 JavaScript 函数调用。我尝试在函数调用的末尾使用分号,这使得 link 显示一条警告,指出它无法解析地址。我也尝试在那里使用纯 JS 和 "javascript:getOverviewURI()"
,它应该与 <a href="...">
标签一起使用,我还尝试直接更改 DOM 元素的属性,但它嵌套得很深,我似乎无法重写。
您无法从 javascript 函数在 h:link 中获得结果,因为 JSF 始终呈现服务器端,并将尝试解析服务器端将什么放在呈现标签的属性 href 上“一种”。如果您需要动态结果,那么函数“getOverviewURI()”应该尽可能成为支持 bean 上的方法。
或者,如果您只想导航,可以使用“onclick”事件并进行以下更改:
<h:link onclick="getOverviewURI()"
title="Overview">
<div>...</div>
</h:link>
function getOverviewURI() {
let URI = window.location.hostname +'/overview.xhtml?phone=';
URI += MobileMatcher.isMobile() ? "true" : "false";
window.location.href =URI;
}
注意使用 js 导航 jsf 应用程序有一些缺点,比如不更新后台 bean。
我有一个 h:link
这样的元素
<h:link outcome="/overview.xhtml?source=menu"
title="Overview">
<div>...</div>
</h:link>
我想根据 JavaScript.
中的MobileMatcher
添加一个布尔变量 phone
到 URI 地址
换句话说,我想这样设置结果:
<h:link outcome="getOverviewURI()"
title="Overview">
<div>...</div>
</h:link>
其中 getOverviewURI()
是返回字符串 URI 的函数:
function getOverviewURI() {
let URI = '/overview.xhtml?phone=';
URI += MobileMatcher.isMobile() ? "true" : "false";
return URI;
}
然而 h:link
需要一个实际的字符串并忽略 JavaScript 函数调用。我尝试在函数调用的末尾使用分号,这使得 link 显示一条警告,指出它无法解析地址。我也尝试在那里使用纯 JS 和 "javascript:getOverviewURI()"
,它应该与 <a href="...">
标签一起使用,我还尝试直接更改 DOM 元素的属性,但它嵌套得很深,我似乎无法重写。
您无法从 javascript 函数在 h:link 中获得结果,因为 JSF 始终呈现服务器端,并将尝试解析服务器端将什么放在呈现标签的属性 href 上“一种”。如果您需要动态结果,那么函数“getOverviewURI()”应该尽可能成为支持 bean 上的方法。
或者,如果您只想导航,可以使用“onclick”事件并进行以下更改:
<h:link onclick="getOverviewURI()"
title="Overview">
<div>...</div>
</h:link>
function getOverviewURI() {
let URI = window.location.hostname +'/overview.xhtml?phone=';
URI += MobileMatcher.isMobile() ? "true" : "false";
window.location.href =URI;
}
注意使用 js 导航 jsf 应用程序有一些缺点,比如不更新后台 bean。