我有一个h:link
这样的元素
<h:link outcome="/overview.xhtml?source=menu"
title="Overview">
<div>...</div>
</h:link>
我想phone
根据MobileMatcher
来自 JavaScript的 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 函数调用。我尝试在函数调用结束时使用分号,这使链接显示无法解析地址的警告。我还尝试在那里使用纯 JS "javascript:getOverviewURI()"
,据说它可以与<a href="...">
标签一起使用,我也尝试直接更改 DOM 元素的属性,但它嵌套很深,我似乎无法重写它。
您无法从 javascript 函数在 h:link 中获得结果,因为 JSF 始终呈现服务器端,并会尝试解析服务器端在呈现的标签“a”的属性 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。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句