如何从 JSF 中的 javascript 函数获取 h:link 的结果值?

托马斯豪瑟

我有一个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 元素的属性,但它嵌套很深,我似乎无法重写它。

ronchi82

您无法从 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章