簡體   English   中英

JSF-單擊<a>元素</a>時調用bean方法

[英]JSF - Calling bean method when clicking <a> element

所以我有一個anchor元素,它的href屬性是從bean動態設置的。 我正在使用錨,因為它正在與fancybox javascript交互。 我需要做的是單擊錨點時在Bean中調用一個方法,以便href將再次更新。 上面有一個文本框也綁定到了bean。 需要發生的是從文本框中獲取文本,並將其解析為錨的href的查詢字符串。

我正在嘗試找出發生這種情況的最佳方法(如果可能的話)。 我可以使用javascript(或Ajax)調用updateHref()方法嗎?

文本框和錨點元素(需要更新的是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");

如果您認為代碼的任何其他部分將是有用的,請告訴我! 在此先感謝您的任何建議!

如果使用JSF 2.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 =“輸出” –在Ajax請求之后,它將刷新ID為“輸出”的組件。 在這種情況下,Ajax請求完成后,它將刷新h:inputTextarea組件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM