有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

单击<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) 个答案

  1. # 1 楼答案

    如果您使用JSF2.0,f:ajax标签可能会解决您的问题。下面是f:ajax标记的示例用法

        <h:commandLink value="#{..}">
            <f:ajax execute="name" render="output" />
        </h:commandLink>
        <h:inputTextarea id="output" value="#{..}" />
    

    execute=“name”–表示Id为“name”的表单组件将被发送到服务器进行处理。对于多个组件,只需在它们之间留出一个空格,例如execute=“name anotherId anotherxxId”。在这种情况下,它将提交文本框值

    render=“output”–在Ajax请求之后,它将刷新id为“output”的组件。在这种情况下,在Ajax请求完成后,它将刷新h:InputExtArea组件