Max Katz heads Developer Relations for Appery.io, a cloud-based mobile app platform. He loves trying out new and cool REST APIs in mobile apps. Max is the author of two books “Practical RichFaces” (Apress 2008, 2011), and is a frequent speaker at developer conferences. You can find out what Max is up to on his blog: mkblog.exadel.com and Twitter: @maxkatz. Max is a DZone MVB and is not an employee of DZone and has posted 72 posts at DZone. You can read more from them at their website. View Full User Profile

An Introduction To JBoss RichFaces

08.25.2008
| 421129 views |
  • submit to reddit

Creating user interface

In the WebContent folder, create a page called user.xhtml with the following content:

<!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:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j">

<head>
<title>RichFaces</title>
</head>
<body>
<h:form>
<rich:panel>
<f:facet name="header">
Just some users
</f:facet>
<rich:dataTable value="#{userBean.users}" var="user">
<h:column>
<h:outputText id="name" value="#{user.name}"/>
</h:column>
<h:column>
<h:outputText id="email" value="#{user.email}"/>
</h:column>
</rich:dataTable>
</rich:panel>
</h:form>
</body>
</html>

 

The page is also very simple. We just display all the users we created inside the managed bean using the rich:dataTable component. At this point we are ready to test the application.

Running on a server

1. Make sure everything is saved.
2. In Servers view, right click the server and select Start
3. Right click users.xhtml and select Run As/Run on Server
4. Click Finish

A Web browser window should open displaying users in a table.

 

 

 

 

 

 

 

 

The next step is to add a button to each column, which when clicked will open a modal panel with user details.

Legacy
Article Resources: 
Published at DZone with permission of Max Katz, author and DZone MVB.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

Yeray Rodriguez replied on Mon, 2009/07/06 - 7:53am

Hi,

I'm using this code on a seam project and it work properly, but, it doesn't work when the table datatable is sorted. I don't know how to get the row id after user has sorted the table. Now I use the position inside the List of elements I pass to the datatable.

thanks in advance

    private Set <Integer>rowsToUpdate;
public Set <Integer>getRowsToUpdate() {
if (rowsToUpdate == null)rowsToUpdate = new HashSet<Integer>();
return rowsToUpdate;
}

public void cambiarFavorito (CartItem cartItem) {

if (rowsToUpdate == null)rowsToUpdate = new HashSet<Integer>();
rowsToUpdate.clear();
int i = 0;
for (i = 0; i<resultList.size(); i++)
{
if (cartItem == resultList.get(i)){
rowsToUpdate.add(i);
break;
}
}
//CartItem cartItem = resultList.get(0);
if (cartItem.getFavorito()==true) cartItem.setFavorito(false);
else cartItem.setFavorito(true);
resultList.remove(i);
resultList.add(i,cartItem);

}

 

        <rich:dataTable
id="listaArticulos" value="#{catalogoVenta.resultList}"
var="articulo" style="width:100%;" ajaxKeys="#{catalogoVenta.rowsToUpdate}" >


<rich:column id='marca' sortBy="#{articulo.marca}">
<f:facet name="header">
<h:outputText value="Marca" />
</f:facet>
<h:outputText value="#{articulo.marca}" />
</rich:column>
                <rich:column width="15px" style="width:15px;">
<f:facet name="header">
<h:graphicImage value="/img/extra/noheart.png" rendered="#{!articulo.favorito}" title="Artículo no favorito" alt="Artículo no favorito" />
</f:facet>
<a4j:commandLink
actionListener="#{catalogoVenta.cambiarFavorito(articulo)}"
id="heart"
reRender="heart">
<h:graphicImage value="/img/extra/heart.png" rendered="#{articulo.favorito}" title="Artículo favorito" alt="Artículo favorito" />
<h:graphicImage value="/img/extra/noheart.png" rendered="#{!articulo.favorito}" title="Artículo no favorito" alt="Artículo no favorito" />
</a4j:commandLink>

</rich:column>

</rich:datatable>
 

sarah mark replied on Thu, 2009/08/13 - 4:57am


I must say great website. I have just googled it nice info out there.
Thanks,
Acne

James Bondy replied on Fri, 2009/08/28 - 2:43am in response to: Brian ray

It doesn't work to me too, can you upload this files again?

Thanks,

Levitra

Edwin William replied on Mon, 2009/09/07 - 2:16pm

:P

nabil esseme7 replied on Thu, 2009/10/01 - 10:24am

hi maxkatz and thank toy for your wonderful example,

i tried your code and this works fine until i want to add the modal panel and the save and close codes to the user.jsp page

i got this exception when i do that:

org.apache.jasper.JasperException: /user.jsp(22,4) The function component cannot be located with 
the specified prefix
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148)
org.apache.jasper.compiler.Validator$ValidateVisitor$1FVVisitor.visit(Validator.java:1495)
org.apache.jasper.compiler.ELNode$Function.accept(ELNode.java:129)
org.apache.jasper.compiler.ELNode$Nodes.visit(ELNode.java:200)
org.apache.jasper.compiler.ELNode$Visitor.visit(ELNode.java:242)
org.apache.jasper.compiler.ELNode$Root.accept(ELNode.java:56)
org.apache.jasper.compiler.ELNode$Nodes.visit(ELNode.java:200)
org.apache.jasper.compiler.Validator$ValidateVisitor.validateFunctions(Validator.java:1504)
org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:1141)
org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:821)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1530)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2411)
org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:840)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1530)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2411)
org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:840)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1530)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2411)
org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:840)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1530)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2411)
org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:840)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1530)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2411)
org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:840)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1530)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2411)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2417)
org.apache.jasper.compiler.Node$Root.accept(Node.java:495)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1736)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:183)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:332)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:312)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:299)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:410)
com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:473)
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:141)
org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:189)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:109)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:147)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:276)
org.ajax4jsf.Filter.doFilter(Filter.java:175)

 the content of my user.jsp is :

 

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@ taglib prefix="rich" uri="http://richfaces.org/rich"%>
<%@ taglib prefix="a4j" uri="http://richfaces.org/a4j"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Gérer les salons de chat sms</title>
</head>
<body>
<f:view>
<h:form>
<rich:panel style="width:350px ;border:1; border-color:red">
<f:facet name="header">
Just some users
</f:facet>
<rich:dataTable value="#{userBean.users}" var="user">
<h:column>
<a4j:commandButton value="Edit" oncomplete="#{rich:component('useredit')}.show()"
reRender="userinfo">
<f:setPropertyActionListener value="#{user}"
target="#{userBean.selectedUser}" />
</a4j:commandButton>
</h:column>
<h:column>
<h:outputText id="name" value="#{user.name}" />
</h:column>
<h:column>
<h:outputText id="email" value="#{user.password}" />
</h:column>
</rich:dataTable>
</rich:panel>
</h:form>

<rich:modalPanel id="useredit">

<f:facet name="header"> User </f:facet>
<h:form>
<h:panelGrid id="userinfo">
<h:outputLabel for="nameInput" value="Name:" />
<h:inputText id="nameInput" value="#{userBean.selectedUser.name}" />
<h:outputLabel for="emailInput" value="Email:" />
<h:inputText id="emailInput"
value="#{userBean.selectedUser.password}" />
<h:panelGrid columns="2">
<a href="#" onclick="#{rich:component('useredit')}.hide();return false">Close </a>
<a4j:commandLink oncomplete="#{rich:component('useredit')}.hide();return false"> Save </a4j:commandLink>
</h:panelGrid>
</h:panelGrid>
</h:form>
</rich:modalPanel>
</f:view>
</body>
</html>

 

any ideas?

thans in advance

Ken Kham replied on Fri, 2009/10/02 - 6:53am

Hello, I just bought the "Practical RichFaces" hoping to learn Richfaces using "JBOSS Developer Studio 2.0.0GA. I downloaded the rcbook-templates.zip, unzip, and copy the contents (ie the lib and template directories) to the (..\studio\eclipse\plugins\org.jboss.tools.common.projecttemplates_3.0.0.GA-R200903141247-H4) directories. Everyting went as outlined in the book, even the warning that some files will be overwritten. I then follow the instructions on page 14 to create a new JSF project. But I tried to select the JSF environment, I could not see Richfaces anywhere??? Please let me know how I can get started on using Richfaces on "JBOSS Developer Studio", which, I would expect to support Richfaces out of the box:( Thank You

Max Katz replied on Thu, 2009/10/08 - 10:23pm in response to: Ken Kham

Did you create a new workspace after copying the templates?

Max Katz replied on Thu, 2009/10/08 - 10:23pm in response to: nabil esseme7

I can't tell you what the problem is, I only ran this application with Facelets.

john green green replied on Mon, 2009/10/26 - 3:28am

There is currently no option to time out keepAlive objects. nike shoes russiaYou can try do to it programmatically, it's an attribute of UIViewRoot. Seam converstations would be a better solution.

Dragan Mijailovic replied on Wed, 2009/10/28 - 8:07am

Can I use "keepAlive bean" for the <rich:tree/> component? For example:

<a4j:keepAlive name="someForm"/>

<rich:tree value="#{someForm.data}">

Max Katz replied on Wed, 2009/10/28 - 10:20pm in response to: Dragan Mijailovic

a4j:keepAlive is not dependent on any component, you can use it with any bean. You are basically getting page scope when using this tag.

Dragan Mijailovic replied on Thu, 2009/10/29 - 8:41am

Thanks a lot. The "keepAlive bean" or bean with page scope should implement the java.io.Serializable interface and because of that I asked about "keepAlive bean" and rich:tree component. I see that org.richfaces.model.TreeNode implements java.io.Serializable interface.

Now, my example with rich:tree is good except I can't know when a node is collapsed. I use this example http://stackoverflow.com/questions/1509962/is-there-an-event-for-collapsing-a-richtree-node

but state.isExpanded(key) is always true! 


 

ely towers replied on Tue, 2009/11/10 - 9:46pm

Im having problems with the  save button its saying that it cannot find save method on bean file

Nov 10, 2009 8:32:37 PM org.ajax4jsf.component.AjaxViewRoot processEvents
SEVERE: Error processing faces event for the component j_id11:j_id16
javax.faces.event.AbortProcessingException: /user.xhtml @50,36 actionListener="#{Usuario.save}": Method not found: example.beans.UserBean@b29c9d.save(javax.faces.event.ActionEvent)
at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:118)
at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:766)
at javax.faces.component.UICommand.broadcast(UICommand.java:372)
at org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:324)
at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:299)
at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:256)
at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:469)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)
Caused by: javax.el.MethodNotFoundException: /user.xhtml @50,36 actionListener="#{Usuario.save}": Method not found: example.beans.UserBean@b29c9d.save(javax.faces.event.ActionEvent)
at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:72)
at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:99)
... 30 more

 here is user.xhtml

<h:form>
<rich:panel style="width:500px" >
<f:facet name="header">
Solo unos usuarios
</f:facet>
<rich:dataTable value="#{Usuario.users}" var="user" ajaxKeys="#{Usuario.rowsToUpdate}" >
<h:column> <h:outputText value="#{user.name}" id="name" />
</h:column>
<h:column> <h:outputText value="#{user.email}" id="email" />
</h:column>
<h:column >
<a4j:commandButton value="Edit"
oncomplete="#{rich:component('useredit')}.show()"
reRender="UserInfo">
<f:setPropertyActionListener value="#{user}" target="#{Usuario.selectedUser}"/>
</a4j:commandButton>
</h:column>
</rich:dataTable>
</rich:panel>
</h:form>
<a4j:keepAlive beanName="Usuario"/>
<rich:modalPanel id="useredit">
<f:facet name="header">
Usuario
</f:facet>
<h:form >
<h:panelGrid id="UserInfo">
<h:outputLabel value="Nombresito:" for="nameImput" />
<h:inputText id="nameImput" value="#{Usuario.selectedUser.name}"/>
<h:outputLabel value="Email" for="emailImput" />
<h:inputText id="emailImput" value="#{Usuario.selectedUser.email}"/>
<h:panelGrid columns="2">
<a href="#" onclick="#{rich:component('useredit')}.hide(); return false">
Close
</a>
<a4j:keepAlive beanName="Usuario"/>
<a4j:commandLink actionListener="#{Usuario.save}"
oncomplete="#{rich:component('useredit')}.hide()"
reRender="name,email">
Save
</a4j:commandLink>
</h:panelGrid>
</h:panelGrid>
</h:form>
</rich:modalPanel>
and here is the bean
package example.beans;

import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.annotation.PostConstruct;
import example.model.User;

public class UserBean {

private List<User>users;
private User selectedUser;
private Set<Integer>rowsToUpdate;



public Set<Integer> getRowsToUpdate() {
return rowsToUpdate;
}


public void save (ActionEvent event){
rowsToUpdate.clear();
rowsToUpdate.add(users.indexOf(selectedUser));
}

public List<User>getUsers(){
return users;
}




public User getSelectedUser() {
return selectedUser;
}

public void setSelectedUser(User selectedUser) {
this.selectedUser = selectedUser;
}



@PostConstruct
public void init(){
users=new ArrayList<User>();
users.add(new User("Joe", "joe@gmail.com"));
users.add(new User("Charley", "charley@hotmail.com"));
users.add(new User("Jesus", "jesus@gmail.com"));
users.add(new User("fatim", "fatima@gmail.com"));
users.add(new User("Cris", "Cris@gmail.com"));
rowsToUpdate = new HashSet<Integer>();
}

 any ideas ?? thanks in advance :_)

Eskendir Mulu replied on Mon, 2009/11/16 - 2:18pm

Is there an out of the box solution to filter tree objects, just like <rich:dtatTable>? if there is none, how would you go about implementing this fuctionality. I'm trying to implement help page.

 

thanks

Eskendir Mulu replied on Mon, 2009/11/16 - 2:35pm

Is there an out of the box solution to filter tree objects, just like <rich:dtatTable>? if there is none, how would you go about implementing this fuctionality. I'm trying to implement help page.

Chhavi Jain replied on Fri, 2010/01/29 - 5:06am

What are the two themes which we can use in<rich:editor>?

 If i use advanced theme then it displays buttons which i have not specified in configuration file,else it doesnt display specified buttons.Please tell me y?

Sami Meddeb replied on Wed, 2010/03/10 - 1:53pm in response to: marius batrinu

pleaseeeeee can some one help me to edit a row in my rich:dataTable?? i applied this work of xadel, but doesn't work for me !!! i am blocked in my studie project. Thanks in advence

Shilpa Reddy replied on Mon, 2010/12/06 - 5:51pm

I was trying to test this sample application and ran into several issues:
1. When I click edit in the dataTable the Model Panel pops up but it not populated .
2. It throws an on the below line in the modal Panel
h:inputText id="nameInput" value="#{userBean.selectedUser.name}"
Error:
javax.el.PropertyNotFoundException: /user.xhtml @55,81 value="#{userBean.selectedUser.name}": Target Unreachable, 'selectedUser' returned null
.....
Any help is much appreciated.
Thanks!

Sarwo Edi Wibowo replied on Tue, 2010/12/28 - 11:14pm

Hi Max, I'm trying your tutorial, really good stuff. Anyway, how to manage so can running on IE 8? Anyway, if you don't mind, give me your strategy to be master like you now. :) Thanks Max.

Peter Sule replied on Wed, 2011/01/05 - 8:26am

Hi all! I also had the problem with the save button on the modal panel. The solution for me was to replace the import java.awt.event.ActionEvent; to import javax.faces.event.ActionEvent; in the userBean.java clas. After saving everything and restarting the server, everything is working fine. Hope it helps! Peter

Max Katz replied on Thu, 2011/01/27 - 12:39pm in response to: Sarwo Edi Wibowo

It should work in IE8 - there is nothing special you need to do.

Max Katz replied on Thu, 2011/01/27 - 12:40pm in response to: Peter Sule

javax.faces.event.ActionEvent - is the correct class to use. It will not work with the Swing class (java.awt.*)

ezd ass replied on Thu, 2011/02/17 - 9:40am

hi, i couldn’t find file hierarchy which is similar to "\plugins\org.jboss.tools.common.projecttemplates_X.X.X. " there is no org.jboss.xxx... package so i couldn't insert the template in file which specified in the tutorial what shall i do? i followed each instruction in tutorial i found the expected result except project template step-3.

David May replied on Mon, 2011/04/11 - 11:33pm in response to: ezd ass

The problem may be with where the JBoss Tools unzipped. On a Mac it creates a separate eclipse directory (eclipse2) instead of adding the files to the existing eclipse directory.

David May replied on Mon, 2011/04/11 - 11:49pm in response to: Max Katz

Note I am having the same problem. JSF Project is not an option that shows up. Checking the Eclipse help, they say to create a JSF Project, one should create a New Dynamic Web Project. Is this a change perhaps since the book was published?

Max Katz replied on Mon, 2011/04/18 - 12:21pm in response to: David May

Make sure you have JBoss Tools installed. The option to create and export a JSF project is still there.

Majid Lotfi replied on Thu, 2011/05/12 - 1:38pm

Hi,

I downloaded eclipse but could not find the directory :

org.jboss.tools.common.projecttemplates_X.X.X

under plugins

 

can you please help.

thanks

Pat Meig replied on Thu, 2013/12/12 - 3:39pm

 I'm developing an application similar to this using a popup panel inplace of the modal panel.  After I click the Edit Button beside Joe the popuppanel is rendered before the query can complete and the name field is displayed as a blank.  If I close the popup and click the edit button for Bob the first name (Joe) is displayed.  It seems like the popup is rendered before the setItem can complete.  BTW setItem performs a several database queries which do not complete immediately.  Any hints how I can get the popup to wait until after the query completes?

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.