单击按钮更新输入文本字段

时间:2014-09-04 23:14:58

标签: jsf primefaces

我有一个Facelets页面,其中我有一个p:inputText字段用于学生ID。我在此输入文本字段旁边还有一个p:commandButton,我希望当我单击此按钮然后生成随机学生ID并显示在此文本字段中。我的Facelets文件代码是:

<td width="15%"><p:inputText id="Student ID" value="#{StudentData.id}"></p:inputText></td>
<td width="13%"><p:commandButton value="Generate ID" action="#{StudentID.id}" ajax="false" >  </p:commandButton></td>

StudentID.id包含生成随机数的代码,如下所示:

public class StudentID implements Serializable {

    private int id;
    public StudentID() {

    }


     public int getId() {  
            return id;  
        }  

     @PostConstruct
       public void init() {

        Random r = new Random();
        int Low = 10;
        int High = 10000;
         id = r.nextInt(High-Low) + Low;
    }

}

代码会生成随机ID但是如何使用该随机ID更新Facelets页面上的输入文本字段?我基本上想要一旦我点击“生成ID”按钮,它旁边的输入文本字段应该使用生成的随机数进行更新。

1 个答案:

答案 0 :(得分:4)

<h:form id="RandomIDGenerationForm">

<h:panelGroup id="StudentIDGeneration">
    <h:inputText id="Student ID" value="#{StudentData.id}"></p:inputText>
</h:panelGroup>
<p:commandButton value="Generate ID" action="#{StudentData.generateRandomID()}" update="StudentIDGeneration">  </p:commandButton>

</form>

// Managed Bean

   public class StudentData implements Serializable {

    private int id;
    public StudentData() {
    //default contructor
    }

    public int getId() {  
        return id;  
    }  

    public void generateRandomID() {
    Random r = new Random();
    int Low = 10;
    int High = 10000;
    id = r.nextInt(High-Low) + Low;
    }
}