2012-10-12 47 views
14

Tôi gặp một số vấn đề với Primefaces 3.2 và JSF 2.1.Primefaces p: commandButton với hành động không được gọi là

Mã của tôi như thế này:

<p:toolbar id="jeditortoolbar" styleClass="jeditortoolbar"> 
     <p:toolbarGroup align="left" height="25" style="height:25px"> 
     <p:commandButton type="button" title="#{msg.beenden}"/> 
     <p:commandButton type="button" title="#{msg.neu}"/> 
     </p:toolbarGroup> 
</p:toolbar> 

Khi tôi hãy nhìn vào Primefaces Showcase p của tôi: CommandButton cần

actionListener="#{myBean.myActionMethod}" 

và Bean của tôi cần một phương pháp như

public void myActionMethod(){} 

Tôi có một số h:form xung quanh thẻ p:toolbar của mình!

Đậu của tôi là ViewScoped.

Cách giải quyết của tôi là Trong *.xhtml file

<p:commandButton type="button" title="#{msg.neu}" onclick="addNewEmptyFile()"/> 
<p:remoteCommand name="addNewEmptyFile" update=":codeTabForm"> 
    <f:setPropertyActionListener value="#{true}" target="#{myBean.myEvent}"/> 
</p:remoteCommand> 

Trong MyBean.java

private String myEvent; 

public void setMyEvent(String value){ myActionMethod();} 

này làm việc cho tôi nhưng tôi nghĩ rằng đây là mã rất bẩn.

Mọi người có thể giúp tôi không?

+0

đâu là vấn đề? Điều gì sẽ xảy ra nếu bạn thử nó như trong giới thiệu? –

+0

Khi tôi thêm các ActionListener Methode sự kiện không được gọi. – user1740789

+3

Bạn đã thử xóa 'type =" button "' khỏi các nút lệnh? –

Trả lời

11

Hãy thử điều này

Bean.java

@ManagedBean 
@ViewScoped 
public class Bean { 

    public String testButtonAction() { 
     System.out.println("testButtonAction invoked"); 
     return "anotherPage.xhtml"; 
    } 

    public void testButtonActionListener(ActionEvent event) { 
     System.out.println("testButtonActionListener invoked"); 
    } 

} 

page.xhtml

<p:toolbar> 
    <p:toolbarGroup> 
    <p:commandButton action="#{bean.testButtonAction}"/> 
    <p:commandButton actionListener="#{bean.testButtonActionListener}"/> 
    </p:toolbarGroup> 
</p:toolbar> 
+5

Tôi thực sự muốn một ngày nào đó IDE có thể cảnh báo cho nhà phát triển về điều này thay vì đơn giản bỏ qua chữ ký của phương thức không khớp ;-) – Leo

+1

Để tham khảo sau này: Trong trường hợp của tôi, tôi đã sao chép nút thuộc tính type = từ một số ví dụ và tự hỏi tại sao mã này công việc và nút của tôi không có. – Thomas

+2

xóa loại = "nút" đã khắc phục sự cố của tôi – Fabii