2012-07-20 141 views
0

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

我想弄清楚發生這種事情的最好方法(如果可能的話)。我可以使用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"); 

如果您認爲代碼的任何其他部分將是有用的,請讓我知道!並預先感謝您的任何建議!

回答

0

如果您使用JSF 2.0,f:ajax標記可能會解決您的問題。這裏爲f的樣品usege:AJAX標籤,

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

執行 =」姓名」 - 說明與‘名稱’一個Id的形式組件將被髮送到服務器以進行處理。對於多個組件,只需將它拆分爲兩個空格,例如execute =「name anotherId anotherxxId」。在這種情況下,它會提交文本框的值。

render =「output」 - Ajax請求後,它將刷新組件的id爲「output」。在這種情況下,Ajax請求完成後,它將刷新h:inputTextarea組件。