Bonjour,
Je développe une appli web avec:
Richfaces 3.3.3.Final
JSF 1.2
Je rencontre un problème quand à l'utilisation du composant <rich:extendedDataTable/>. Mon problème est que je veux rajouter des champs de filtre sur chacune de mes colonnes, par contre quand je regarde le code HTML généré pour l'input text du filtre j'obtiens:
<input type="text" id="users-form:users-datatable:firstnamefsp" name="users-form:users-datatable:firstnamefsp" class="rich-filter-input">
alors que celui de la démo de richfaces se présente comme suit
<input type="text" onkeyup="A4J.AJAX.Submit('form',event,{'oncomplete':function(request,event,data){var element = request.form.elements['form:table:col_2fsp'];if (!element) {element = document.getElementById('form:table:col_2fsp')}if (element) {element.focus();element.value = element.value;}},'similarityGroupingId':'form:table','parameters':{'form:table':'fsp'} } )" onclick="Event.stop(event);" class="rich-filter-input" name="form:table:col_2fsp" id="form:table:col_2fsp">
On voit donc clairement que dans mon code (généré), il n'y a pas l'évenement onkeyup=...
Et pourtant mon code semble être semblabe à celui de la démo.
Voici le contenu de mes fichiers:
web.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
| <?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>SIRH-WEB</display-name>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>
<context-param>
<param-name>javax.faces.application.CONFIG_FILES</param-name>
<param-value>/WEB-INF/faces-config.xml</param-value>
</context-param>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
<!-- Richfaces Configuration-->
<context-param>
<param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
<param-value>com.sun.facelets.FaceletViewHandler</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.SKIN</param-name>
<param-value>blueSky</param-value>
</context-param>
<!-- Making the RichFaces skin spread to standard HTML controls -->
<context-param>
<param-name>org.richfaces.CONTROL_SKINNING</param-name>
<param-value>enable</param-value>
</context-param>
<!--
<context-param>
<param-name>com.sun.faces.enableRestoreView11Compatibility</param-name>
<param-value>true</param-value> </context-param>
-->
<!--
<context-param>
<param-name>org.ajax4jsf.handleViewExpiredOnClient</param-name>
<param-value>true</param-value> </context-param>
-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:sirh/config/applicationContext.xml
</param-value>
</context-param>
<session-config>
<session-timeout>15</session-timeout>
</session-config>
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
<listener>
<listener-class>com.npd.sirh.web.listener.SirhListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<display-name>RichFaces Filter</display-name>
<filter-name>richfaces</filter-name>
<filter-class>org.ajax4jsf.Filter</filter-class>
</filter>
<filter-mapping>
<filter-name>richfaces</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<filter>
<filter-name>SessionTimeoutFilter</filter-name>
<filter-class>com.npd.sirh.web.filters.SirhFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SessionTimeoutFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
</web-app> |
editUser.xhtml ==> qui contient le composant extendedDataTable
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
| <!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:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j">
<ui:composition template="../templates/content-template.xhtml">
<ui:define name="content-title">
Edit user
<link href="../../assets/css/dashboard-template.css" rel="stylesheet"
type="text/css" />
</ui:define>
<ui:define name="content-body">
<h:form>
<rich:toolBar id="edit-user-toolbar" itemSeparator="disc">
<rich:toolBarGroup id="edit-group-add">
<h:graphicImage id="add-user-icon"
value="../assets/img/toolbar/new-document.png" />
<h:outputLabel value="Add user" for="add-user-icon" />
</rich:toolBarGroup>
<rich:toolBarGroup id="edit-group-edit">
<h:graphicImage id="edit-user-icon"
value="../assets/img/toolbar/modif.png" />
<h:outputLabel value="Edit user" for="edit-user-icon" />
</rich:toolBarGroup>
<rich:toolBarGroup id="edit-group-remove">
<h:graphicImage id="remove-user-icon"
value="../assets/img/toolbar/delete-document.png" />
<h:outputLabel value="Remove user" for="remove-user-icon" />
</rich:toolBarGroup>
</rich:toolBar>
</h:form>
<rich:spacer height="30px">
</rich:spacer>
<div align="center"><h:form id="users-form">
<rich:extendedDataTable id="users-datatable"
noDataLabel="No user found !" sortMode="single"
value="#{usersUI.users}" var="user" width="450px" height="300px"
selectionMode="single">
<rich:column filterBy="#{user.firstName}" filterEvent="onkeyup"
width="150px" sortable="true" sortBy="#{user.firstName}"
label="First name" id="firstname">
<f:facet name="header">
<h:outputText value="First name" />
</f:facet>
<h:outputText value="#{user.firstName}" />
</rich:column>
<rich:column filterEvent="onkeyup" filterBy="#{user.lastName}"
sortBy="#{user.lastName}" width="150px" sortable="true"
label="Last name" id="lastname">
<f:facet name="header">
<h:outputText value="Last name" />
</f:facet>
<h:outputText value="#{user.lastName}" />
</rich:column>
<rich:column filterEvent="onkeyup" filterBy="#{user.role}"
sortBy="#{user.role}" width="150px" sortable="true" label="Role"
id="role">
<f:facet name="header">
<h:outputText value="Role" />
</f:facet>
<h:outputText value="#{user.role}" />
</rich:column>
<f:facet name="footer">
<rich:datascroller for="users-datatable">
</rich:datascroller>
</f:facet>
</rich:extendedDataTable>
</h:form></div>
</ui:define>
</ui:composition>
</html> |
mon mbean
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| public class UsersUI {
private User selectedUser;
private List<User> users;
private int usersSize;
private String state;
/**
* @param selectedUser
* the selectedUser to set
*/
public void setSelectedUser(User selectedUser) {
this.selectedUser = selectedUser;
}
/**
* @return the selectedUser
*/
public User getSelectedUser() {
return selectedUser;
}
/**
* @param users
* the users to set
*/
public void setUsers(List<User> users) {
this.users = users;
}
/**
* @return the users
*/
public List<User> getUsers() {
if (users == null) {
users = new ArrayList<User>();
UserService userService = (UserService) SpringApplicationContext
.getBean("userServiceImpl");
users = userService.getAllUsers();
}
return users;
}
/**
* @return the usersSize
*/
public int getUsersSize() {
return users.size();
}
/**
* @param state
* the state to set
*/
public void setState(String state) {
this.state = state;
}
/**
* @return the state
*/
public String getState() {
return state;
}
/**
* @param usersSize
* the usersSize to set
*/
public void setUsersSize(int usersSize) {
this.usersSize = usersSize;
}
} |
Je rappel que je n'ai aucun message d'erreur, le seul problème est que lors que j'entre du texte dans les champs de filtre il ne se passe rien (ce qui est normal) vu le code HTML généré.
Merci de me répondre si vous êtes expert ou plus expérimenté.
Partager