单击<a>元素时java JSF调用bean方法
所以我有一个锚元素,它的href属性是从bean中动态设置的。我正在使用锚,因为它与fancybox javascript交互。我需要做的是在单击锚点时调用bean中的一个方法,以便href再次更新。上面有一个文本框,它也绑定到bean。需要做的是从文本框中提取文本,并将其解析为锚的href的查询字符串
我正试图找出实现这一点的最佳方式(如果可能的话)。我是否能够使用javascript(或Ajax)调用updateRef()方法
textbox和anchor元素(需要更新的是ModelBean.ending):
<h:inputTextarea value="#{ModelBean.tweet}" class="textarea.hs-input #{ModelBean.tweetClass}" style="width:200px;" >
<f:facet name="label">
Tweet
</f:facet>
</h:inputTextarea>
</td>
</tr>
<tr>
<td>
<h:commandButton value="Analyze Tweet" class="hs-button orange" action="#{ModelBean.tweetAnalysis()}" />
</td>
<td>
<a href="https://app.hubspot.com/social/#{ModelBean.hubID}/publishing/compose_bookmarklet?body=#{ModelBean.ending}" class="hs-button primary fancybox-iframe" data-fancybox-type="iframe" >
Tweet it!
</a>
</td>
</tr>
下面是需要调用的java部分:
ending = URLEncoder.encode(tweet, "UTF-8");
ending = ending.replaceAll("\\+", "%20");
如果您认为代码的任何其他部分将是有用的,请让我知道!提前感谢您的建议
# 1 楼答案
如果您使用JSF2.0,f:ajax标签可能会解决您的问题。下面是f:ajax标记的示例用法
execute=“name”–表示Id为“name”的表单组件将被发送到服务器进行处理。对于多个组件,只需在它们之间留出一个空格,例如execute=“name anotherId anotherxxId”。在这种情况下,它将提交文本框值
render=“output”–在Ajax请求之后,它将刷新id为“output”的组件。在这种情况下,在Ajax请求完成后,它将刷新h:InputExtArea组件