2013-02-06 28 views
0

我添加一些代碼使用jQuery .append()JSF comandLink添加使用jQuery .append()不工作

$('#div').append('<div id="windiv">'+ 
      '<h:commandLink id="cmdbtn">'+ 
      '<div id="reducebtndiv" class="btn"></div>'+ 
     '<f:ajax event="click" execute="@form"'+ 
       'listener="#{screenShotBean.takeScreenshot}" ></f:ajax>'+ 
        '</h:commandLink>'); 

但commandLink不起作用。 所以問題是,有沒有辦法讓它工作?我也很欣賞知道這個理論。 :)

回答

2

commandLink不起作用,因爲您正在使用由客戶端(瀏覽器)運行的JavaScript添加它。

JSF視圖(由JSF組件構成)需要在服務器端進行處理,當它們被渲染時,它們會輸出適合您的瀏覽器處理的HTML元素。 JSF組件不是標準的HTML元素,因此它們不被瀏覽器識別。

很難猜測你想要實現什麼,但是如果你想動態地添加一些JSF組件,那麼你需要觸發一個針對服務器的AJAX請求,並重新渲染視圖中的那些組件需要插入(當然,如HTML)。

+0

JSF爲commandLink和f:ajax生成的代碼如下:

,我添加了mojarra.js和jsf.js,它們被它們請求並將這些代碼直接放在.xhml文件中,但它不會既不工作也不工作。 – Bardelman

+0

聽起來更像是一種解決方案,即使它工作我也不會嘗試,如果Mojarra實現在將來某一天改變,代碼將停止工作。我們爲什麼不從頭開始?你想要達到什麼目的?我相信你可以用JSF的方式做到這一點 –

+0

我不明白爲什麼它看起來像一個黑客,因爲它是一個開源框架!我想要的是添加js的代碼,可以擊中一個託管bean方法(AjaxBehaviorEvent偵聽器處理程序),我不會用JSF JavaScript API做,因爲我不能設置「偵聽器」,它也有用jquery .append()添加代碼的可能性,但無論如何,我知道我可以通過其他方式包含一些代碼。謝謝你,無論如何:) – Bardelman