所以我有一个锚元素,它的href属性是从bean动态设置的。我正在使用锚,因为它与fancybox javascript交互。我需要做的是在单击锚点时调用bean中的方法,以便href再次更新。上面有一个文本框也绑定到bean。需要做的是从文本框中获取文本,并将其解析为锚点href的查询字符串。
我正在努力找出实现这一目标的最佳方式(如果可能的话)。我是否可以使用javascript(或Ajax)来调用updateHref()方法?
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");
如果您认为代码的任何其他部分有用,请告诉我们!并提前感谢任何建议!
答案 0 :(得分:0)
如果你使用JSF 2.0,f:ajax标签可以解决你的问题。这是f:ajax标签的示例用法,
<h:commandLink value="#{..}">
<f:ajax execute="name" render="output" />
</h:commandLink>
<h:inputTextarea id="output" value="#{..}" />
执行 =“名称” - 表示ID为“name”的表单组件将被发送到服务器进行处理。对于多个组件,只需将它们之间用空格分开,例如execute =“name anotherId anotherxxId”。在这种情况下,它将提交文本框值。
render =“output” - 在Ajax请求之后,它将刷新id为“output”的组件。在这种情况下,在Ajax请求完成后,它将刷新h:inputTextarea组件。