2013-10-17 53 views
1

我有這樣的一段代碼在我的JSF頁面執行動作:如何顯示一個模式,並在同一時間

<a href="#adios" data-toggle="modal"> 
<h:commandButton value="Pay!" action="#{basketManager.pay(accountManager.currentAccount.username)}" 
class="btn btn-primary btn-lg"></h:commandButton> 
</a> 

模態顯示,但不執行action ...我怎麼能執行這兩個動作(顯示模式和調用方法)在同一時間?

+0

爲什麼你有一個提交的鏈接裏面擺在首位? –

+0

@LuiggiMendoza好吧,不是我想要的「鏈接」,我只是想參考腳本,所以它激活時,我按下按鈕。當我按下此按鈕而不是使用鏈接時,是否有另一種方法來運行腳本?這將是非常有益的。 –

回答

1
<h:form> 
    <p:remoteCommand name="callAction" onstart="Place your javascript code to show the model" 
     action="#{basketManager.pay(accountManager.currentAccount.username)}" 
     update="@form" /> 
    <h:commandButton value="Pay!" class="btn btn-primary btn-lg" 
        onclick="callAction();" /> 
</h:form> 

這裏你可以在javascript函數中調用你的ManagedBean方法。 當遠程命令啓動它執行它顯示的模型,甚至調用的操作方法

希望這有助於你

+1

爲什麼不使用''來代替? –

+0

它引發了以下錯誤:類'org.primefaces.component.fileupload.FileUploadRenderer'缺少運行時依賴項:java.lang.NoClassDefFoundError:org/apache/commons/fileupload/FileItem。有關更多詳細信息,請參閱server.log。 –

+0

@LuiggiMendoza它將如何使用''? –

1

如果要在提交表單時執行腳本,可以在commandButton標記內使用onclick="alert('Clicked submit button!');"事件。

執行這兩個操作的方法之一是在bean中使用@ManagedProperty批註。 例如改變你透過布頓這一個

<h:form> 
    <h:commandButton value="Pay!" action="#{basketManager.pay()}" 
    class="btn btn-primary btn-lg" onclick="alert('Clicked submit button!');" /> 
</h:form> 

那麼你的豆可能更是這樣的:

import java.io.Serializable; 
import javax.faces.bean.ManagedBean; 
import javax.faces.bean.RequestScoped; 

@ManagedBean(name = "basketManager") 
@RequestScoped 
public class BasketManager implements Serializable { 

    @ManagedProperty(value="#{accountManager}") 
    private AccountManager accountManager; 

    //this is nessesery! 
    public void setAccountManager(AccountManager accountManager) { 
     this.accountManager = accountManager; 
    } 

    public String pay() { 
     if(accountManager != null) { 
      //... do something using accountManager.currentAccount.username 
     } 
     return ""; // your action result 
    } 
} 

你要記住,BasketManager bean必須是在相同或更小的範圍比的AccountManager豆。例如,如果AccountManager是@SessionScoped,則BasketManager可以是@SessionScoped@ViewScoped@RequestScoper。那就不可能是@ApplicationScoped