- 浏览: 96040 次
文章分类
最新评论
-
jXee:
lgs0626 写道求源码,兄弟给共享下吧 "jee ...
jee6 学习笔记 4 - CRUD 2: View Details, Primefaces row selection -
lgs0626:
求源码,兄弟给共享下吧
jee6 学习笔记 4 - CRUD 2: View Details, Primefaces row selection
jee6 学习笔记 4 - CRUD 2: View Details, Primefaces row selection
- 博客分类:
- JEE
screenshot of view details button:
screenshot of view details of selected row:
updated backing bean "StudentSearch.java":
1. added property "Student selectedStudent"
2. added getter/setter for it, as selection action listener
updated model Student: missing property "age" before )-;
updated page "student/studentSearch.xhtml"
1. added a <p:commandButton> to enable row selection
2. added a <p:dialog> to enable view student details
小姐一下:
1, Primefaces provides a few options of row selection to enable row operations.
2, we used basic single row selection to view details of the selected row.
3, basic row selection can be achieved by <p:commandButton>.
3.1, update=":form:idDisplay": use attribute "update" to set the dom id of the element to hold row data. the value corresponds to the element id of <h:panelGrid>, which is a sub-element included in <p:dialog>.
3.2 oncomplete="wvStuDialog.show()": use attibute "oncomplete" to activate the display of the dialog. the value corresponds to attribute "widgetVar" of <p:dialog>.
4, Primefaces makes it pretty easy.
5, it should be noted that the model object "Student" does not implement any extra interfaces at all - it's a simple POJO. So is the backing bean "StudentSearch".
"jee6 学习笔记 5 - Struggling with JSF2 binding GET params" has an uploaded zipped project. You can download if you like...have fun
screenshot of view details of selected row:
updated backing bean "StudentSearch.java":
1. added property "Student selectedStudent"
2. added getter/setter for it, as selection action listener
package com.jxee.action.student; import java.util.List; import javax.ejb.EJB; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import org.apache.log4j.Logger; import com.jxee.ejb.student.StudentDAO; import com.jxee.model.student.Student; @ManagedBean(name="ss") @SessionScoped public class StudentSearch implements Serializable { private static final Logger log = Logger.getLogger(StudentSearch.class); private List<Student> searchResultList; @EJB private StudentDAO dao; private String nameFilter; private int maxRows = 50; // property for Primefaces single row selection private Student selectedStudent; public String findByName() { log.debug("search student by nameFilter: " + nameFilter); searchResultList = dao.find(this.nameFilter, maxRows); return "studentSearch"; } public String getNameFilter() { return nameFilter; } public void setNameFilter(String afilter) { this.nameFilter = afilter; } public int getMaxRows() { return maxRows; } public void setMaxRows(int maxRows) { this.maxRows = maxRows; } public List<Student> getSearchResultList() { return searchResultList; } public void setSearchResultList(List<Student> searchResultList) { this.searchResultList = searchResultList; } public int getSize() { return this.searchResultList != null ? this.searchResultList.size() : 0; } public Student getSelectedStudent() { return selectedStudent; } //action lister for row selection public void setSelectedStudent(Student selectedStudent) { log.debug("student selected: " + selectedStudent); this.selectedStudent = selectedStudent; } }
updated model Student: missing property "age" before )-;
package com.jxee.model.student; import java.io.Serializable; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.validation.constraints.Max; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import javax.validation.constraints.Past; import javax.validation.constraints.Pattern; import javax.validation.constraints.Size; @Entity @Table(name="STUDENT") public class Student implements Serializable { @Id @GeneratedValue @Column(name="id") private Integer id; @Column(name="name") @NotNull(message="name cannot be null") @Size(min=4,max=20,message="name must be 4-20 characters") private String name; @Column(name="mobile") @Pattern(regexp="^([0-9])(6,15)$", message="invalid mobile number") private String mobile; @Column(name="age") @Min(value=1, message="age cannot be less than 1") @Max(value=200, message="age cannot be greater than 200") private int age; @Column(name="created_date") // map to "TemporalType.TIMESTAMP" to output time as well @Temporal(TemporalType.TIMESTAMP) @NotNull(message="created_date is required") @Past(message="created date cannot be in future") private Date created_date; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } public Date getCreated_date() { return created_date; } public void setCreated_date(Date created_date) { this.created_date = created_date; } public String toString() { StringBuffer sb = new StringBuffer(); sb.append(Student.class.getName()).append(":[") .append("id=").append(this.getId()) .append(";name=").append(this.getName()) .append(";mobile=").append(this.getMobile()) .append("age=").append(this.getAge()); return sb.toString(); } }
updated page "student/studentSearch.xhtml"
1. added a <p:commandButton> to enable row selection
2. added a <p:dialog> to enable view student details
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui"> <h:head> <title>student search</title> </h:head> <h:body> <h:form id="form"> <p:panel header="Student Search Form"> <h:panelGrid columns="3"> <h:outputLabel value="Name: "/> <h:inputText value="#{ss.nameFilter}"></h:inputText> <h:commandButton type="submit" value="Search" action="#{ss.findByName}"/> </h:panelGrid> </p:panel> <br/> <p:panel style="border:0px"> students found: #{ss.size} </p:panel> <!-- search result list --> <p:dataTable id="stuDataTable" var="st" value="#{ss.searchResultList}" paginator="true" rows="3"> <p:column headerText="name" sortBy="#{st.name}"> <h:outputText value="#{st.name}" /> </p:column> <p:column headerText="mobile" sortBy="#{st.mobile}"> <h:outputText value="#{st.mobile}" /> </p:column> <p:column headerText="age" sortBy="#{st.age}"> <h:outputText value="#{st.age}" /> </p:column> <p:column headerText="created date" sortBy="#{st.created_date}"> <h:outputText value="#{st.created_date}"> <f:convertDateTime pattern="yyyy-MM-dd HH:mm:ss"/> </h:outputText> </p:column> <p:column headerText="Action" style="width:4%"> <p:commandButton id="idSelectButton" update=":form:idDisplay" oncomplete="wvStuDialog.show()" icon="ui-icon-search" title="View Details"> <f:setPropertyActionListener value="#{st}" target="#{ss.selectedSt}" /> </p:commandButton> </p:column> </p:dataTable> <!-- view detail dialog --> <p:dialog id="idStuDlg" header="Student Details" widgetVar="wvStuDialog" resizable="false" showEffect="fade" hideEffect="slide" modal="true"> <h:panelGrid id="idDisplay" columns="2" cellpadding="4" style="margin:0 auto;"> <h:outputText value="id: " /> <h:outputText value="#{ss.selectedSt.id}"/> <h:outputText value="name: " /> <h:outputText value="#{ss.selectedSt.name}"/> <h:outputText value="mobile: " /> <h:outputText value="#{ss.selectedSt.mobile}"/> <h:outputText value="created date: " /> <h:outputText value="#{ss.selectedSt.created_date}"/> </h:panelGrid> </p:dialog> </h:form> </h:body> </html>
小姐一下:
1, Primefaces provides a few options of row selection to enable row operations.
2, we used basic single row selection to view details of the selected row.
3, basic row selection can be achieved by <p:commandButton>.
3.1, update=":form:idDisplay": use attribute "update" to set the dom id of the element to hold row data. the value corresponds to the element id of <h:panelGrid>, which is a sub-element included in <p:dialog>.
3.2 oncomplete="wvStuDialog.show()": use attibute "oncomplete" to activate the display of the dialog. the value corresponds to attribute "widgetVar" of <p:dialog>.
4, Primefaces makes it pretty easy.
5, it should be noted that the model object "Student" does not implement any extra interfaces at all - it's a simple POJO. So is the backing bean "StudentSearch".
评论
2 楼
jXee
2012-07-23
lgs0626 写道
求源码,兄弟给共享下吧
"jee6 学习笔记 5 - Struggling with JSF2 binding GET params" has an uploaded zipped project. You can download if you like...have fun
1 楼
lgs0626
2012-07-20
求源码,兄弟给共享下吧
发表评论
-
ActiveMQ and Spring JMS Framework Message Loss
2019-06-28 07:15 29Java Message Service (JMS) prov ... -
how to proxy to k8s web console
2018-06-28 07:16 525### how to access k8s web conso ... -
Call Stored Procedure with JPA 2.1
2018-06-27 10:57 613JPA 2.1 introduces APIs to call ... -
Send response and then process - async processing
2017-10-12 09:35 506If your request processing take ... -
java 8 time api test
2017-08-29 05:40 432public class ParseUtcDateTime ... -
Setup ApiKey in header with Swagger generated client code
2017-08-23 06:41 434@Value("${api.base.path} ... -
Simple tool to monitor jvm memory usage and garbage collection
2016-10-13 06:06 311JDK has built-in tool to moni ... -
Externalize Application Config properties with JBoss 7.1
2017-06-02 12:09 300If you have configuration pro ... -
JPA native query does not support setting list parameters
2014-03-27 06:45 965you might want to do the ... -
Owning Side and Inverse Side of JPA entity relationships
2013-09-10 07:08 754Entity relationships may be b ... -
avoid setParameter for "order by" in JPQL
2013-03-07 05:55 749you might want to create a JP ... -
JPA Path Expression, operator IN and Collection properties
2013-01-23 16:25 1336If we want to select the Orde ... -
与JEE6/EJB3.1相比, Spring framework 丧失了几乎所有的优势
2013-01-19 13:13 993The Spring framework was a ma ... -
Simple EasyMock tutorial
2012-12-20 11:57 618http://veerasundar.com/blog/20 ... -
Servlet 3.0 @WebFilter and @WebServlet
2012-12-04 07:09 2629Servlet 3.0 provides new annota ... -
Why JSF2 @ViewScoped not working?
2012-12-03 06:55 1338javax.faces.bean.ViewScoped sai ... -
When to configure an XA datasource?
2012-11-16 12:58 1222If you ever came across this wa ... -
java ee transaction and datasource concepts
2012-11-10 13:48 9831. What is a transaction? A tra ... -
pass params to primefaces confirmation dialog box
2012-09-28 19:30 1299<p:dataTable id="idStuD ... -
Handle Big Dataset with Real Pagination with Primefaces 3.3 LazyDataModel
2012-09-21 13:41 5582If you have millions of record ...
相关推荐
开发工具 eclipse-jee-mars-2-win32开发工具 eclipse-jee-mars-2-win32开发工具 eclipse-jee-mars-2-win32开发工具 eclipse-jee-mars-2-win32开发工具 eclipse-jee-mars-2-win32开发工具 eclipse-jee-mars-2-win32...
eclipse-jee-mars-2-win32 javaee开发工具 eclipse-jee-mars-2-win32 javaee开发工具
eclipse-jee-ganymede-SR2-win32.zip
eclipse-jee-mars-1-win32-x86_64.7z eclipse-jee-mars-1-win32-x86_64.zip 我打的 7z 压缩包 关于有 Alt + / 不起作用解决办法: window -> General -> Keys -> Content Assist -> Binding: 改为 Alt + / When:...
eclipse-jee-2020-06-R-win32-x86_64
eclipse-jee-2022-03-R-win32-x86_64.zip
eclipse-jee-mars-R-win32-x86_64.zip 截至2015.06.30 eclipse-j2ee 最新版
eclipse-jee-2022-09-R-win32-x86_64.zip 适用于Windows x86_64
eclipse-jee-juno-SR2-win32-x86_64, 百度云盘下载!
Eclipse64位3.6.2太阳神版eclipse-jee-helios-SR2-win32-x86_64.zip支持jdk1.5 Eclipse 支持jdk1.5 64位 helios 太阳神版 eclipse-jee-helios-SR2-win32-x86_64.zip 更多eclipse版本可看查看我的系列,欢迎下载~
eclipse-jee-juno-SR2-linux-gtk-x86_64.tar.gz
NULL 博文链接:https://jxee.iteye.com/blog/1608820
eclipse-jee-kepler-SR2-win32.zip
eclipse-jee-2018-09-win32-x86_64.zip
eclipse-jee-2021-12-R-win32-x86_64 eclipse-jee-2021-12-R-win32-x86_64 eclipse-jee-2021-12-R-win32-x86_64
eclipse-jee-mars-2-win32-x86_64集成maven、git等环境,适用于快捷搭建开发环境
NULL 博文链接:https://jxee.iteye.com/blog/1575432
eclipse-jee-2021-06-R-win32-x86_64.zip
Eclipse IDE for Enterprise Java and Web Developers (eclipse-jee-2021-12-R-win32-x86_64.zip)适用于Windwos x86_64
eclipse-jee-2021-03-R-win32-x86_64