Javaserver faces rendering ui in jdev ide

Hello, does anyone has experienced with the JavaServer Faces release 1.1_01 FCS, that the cardemo or other jsf application doesn't render the ui components in jdev 9.0.5.2 ide, having of course "execute tags in jsp visual editor" checked ?
I hope ORACLE will provide very soon some enhancement in the jdev IDE to help building jsp app with jsf tags.
Thank's for anyhelp or advice

You can get an early access preview of the ADF Faces support here:
http://www.oracle.com/technology/products/jdev/htdocs/partners/addins/exchange/jsf/index.html

Similar Messages

  • Has JavaServer Faces reached beta?

    I know---please forgive my sarcasm. (I'm sure you've been at this point, too, in your programming career. I'll just vent a little.) I've only spent several days trying to create a simple page I could have coded in a couple of hours in any given language---Java, C++, 80x86 assembler---but not JavaServer Faces.
    Has anyone created any real applications in JSF? It's practically unusable in the real world. I'm about to throw it all away for JSP and JSTL. Here's why:
    * I can't pass parameters to bean methods in the expression language.
    * dataTable can't create <th> except in a header facet, and a header facet can't access data being iterated.
    * There's no way to specify different styles for different <th> elements in a dataTable.
    * There's no way to specify a unique style (rather than the simple alternating styles) for a dataTable row.
    * JSF beans aren't available to the JSTL expression language unless you go through ugly hacks (such as outputting a JSF bean method to a dummy JSTL variable) to make sure the JSF backing beans get instantiated.
    * If any non-JSF stuff (including JSTL, HTML, verbatim character data, or whatever) is present in a JSF page, one has to tediously make sure that a special, seemingly-arbitrary hierarchy of subviews are in place---and even then it's not clear if you're following the spec or just managed to randomly find a combination that worked. Otherwise, all the information gets rendered out of order and out of hierarchy.
    * Don't even think about getting JSTL iteration elements to work with any of this.
    * commandLink still doesn't work in JSF 1.1_01.
    I'd go on, but I need to go back to taking JSF out of the single page I've been working on for days.
    Thanks for listening,
    Garret

    * dataTable can't create <th> except in a header
    facet, and a header facet can't access data being
    iterated.I've no idea why the heck you think a header facet
    should be able to access data that's being iterated.
    That makes no sense to me at all. A header is
    explicltly and, to me at least, obviously not part
    of per-row iteration!Read both parts of that comment together---what I'm really wanting is to be able to get a <th>, and the only way to do that is with a header facet. Here's an example off the top of my head:
    <h1>Book Metadata</h1>
    <table>
    <tr><th>Author</th> <td>Jane Doe</td></tr>
    </table>
    Here the row header is from a list of arbitrary book metadata---we don't know ahead of time what metadata properties the book has. Maybe it has two authors. Maybe it has five creation dates.
    It seems as though your frustrations mostly boil
    down to:
    (1) You hate <h:dataTable>, and find it too limiting.
    Well, it's one of the first JSF element's I've tried (after commandLink, of course). Maybe all of the others work just fine and are powerful.
    (2) You're trying to mix JSTL and JSF, and are
    surprised this doesn't work.
    For #2, it's a known and much-documented thing, so I
    can't understand why you're surprised.
    However documented it is, I'm surprised that not only does JSF not offer equivalent functionality as JSTL, it removes the ability to use JSTL.
    Garret                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • JavaServer Faces and Portal Servers

    Hi all,
    Do you think JavaServer Faces will have substantial applications in developing the user interface for a portal server? To me, it seems like the whole portal page with the tabbed panes and other gadgets could be one large JavaServer Faces component, composed of many smaller JavaServer Faces components. The user interface for a portlet for instance would be a smaller component that is a part of the larger portal page component. Does this make sense to you?
    Your ideas are appreciated.
    Thanks,
    Mete

    Hello Craig,
    Thanks very much for your reply. I think this topic is an exciting one: Making portal servers and portlets integrate well with JavaServer Faces.
    You said that JavaServer Faces will make it easy for portal servers to contain portlets that have JavaServer Faces components in their GUI, but understandably this does not mean that portlets will be required to have a GUI that is made out of JavaServer Faces. The portal server should be tolerant to any kind of GUI that a portlet may be using. So, how would a portal server that has its portal layout built completely with JavaServer Faces work well with portlets that do not have a JavaServer Faces GUI? Would JavaServer Faces make it easy to to embed GUI markup from non-Faces portlets into a portal page that is generated by a master JavaServer Faces component that encapsulates the whole portal page layout?
    How could a scenario like this be handled:
    The user device is a handheld device, so the master portal page JavaServer Faces component decides to use a WML renderer for generating the portal page instead of an HTML renderer. All of the JavaServer Faces enabled portlets are generated using the WML renderer, but the portlets that do not have a JavaServer Faces GUI cannot be rendered in WML. What should the master portal page JavaServer Faces component do in this case?
    Thanks,
    Mete

  • JavaServer Faces Unit Test Framework

    Based on my knowledge, there isn't any handy JSF Unit test tools. To facilitate UI developers and QAs to do test, I have created a prototype project to evaluate a solution.
    For a Simple JSF enabled JSP file:
    <?xml version="1.0" encoding="UTF-8"?>
    <jsp:root version="1.2" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:jsp="http://java.sun.com/JSP/Page">
       <jsp:directive.page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" />
         <f:view>
              <h:form>
                <h:outputText value="Please input:"/>
                   <h:inputText id="input1"/>
                <br/>
                <h:outputText value="Please input a integer:"/>
                   <h:inputText style="width:50px;" converter="javax.faces.Integer"/>
                <h:commandButton value="Submit"/>     
           </h:form>
       </f:view>
    </jsp:root>writing a HttpUnit to this page is obviously difficult:
    1) Hard to pin-point the html element rendered by input1, because up-level NamingContainer h:form is missing id.
    2) More difficult to find the second InputText, because missing two ids.
    3) How to assert if the converter really works or not, we can't assert any object in PageBean by HttpUnit.
    4) Much more difficult to find those html element if there are several level NamingContainer, such as the component nested within "for-loop".
    I perfer not to write HttpUnit and seperate JUnit to PageBean, so if the follow JSP can be used in both test and production environment, work will be much easier:
    * test1.jsp
    <?xml version="1.0" encoding="UTF-8"?>
    <jsp:root version="1.2" xmlns:test="http://www.yourcompany.com/jsf/test"  xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:jsp="http://java.sun.com/JSP/Page">
       <jsp:directive.page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" />
         <f:view>
            <test:parameter name="abc" value="def"/><!-- setting request parameter -->
              <h:form>
                <h:outputText value="Please input:"/>
                   <h:inputText>
                   <test:set value="hello"
    /> <!-- emulate inputing "hello" to the text box -->
                   <test:assert phase="afterUpdateModelValues" description="InputText1" var="input1" value="#{input1=='hello'}"/><!-- you can try other JSF phases as well, here var "input1" is parent jsf component -->
                      <test:assert description="InputText1" var="input1" value="#{input1=='hello'}"/>
    <!-- use default phase "afterRenderResponse", here var "input1" is HtmlElement fetched from rendered page by HttpUnit -->
                </h:inputText>
                <br/>
                <h:inputText style="width:50px;" converter="javax.faces.Integer">
                   <test:set actions="all" value="123"/>
                   <test:assert phase="afterUpdateModelValues" description="Input2 Class Name" var="input2CN" value="#{input2CN.class.name == 'java.lang.Integer'}"/>
                   <test:assert description="InputText2 value in afterRenderResponse phase" var="input2" value="#{input2=='123'}"/>
                   <test:assert description="InputText2 Style" var="input2Style" valueAttribute="style" value="#{input2Style=='width:20px;height:25px;'}"/>
                </h:inputText>
                <br/>
                <h:commandButton value="Submit">
                   <test:action description="Test Sumbit"/><!-- support multi actions -->
                </h:commandButton>     
           </h:form>
       </f:view>
    </jsp:root> For production jsp you can use normal url, http://server:port/yourapp/faces/test1.jsp, those test:xxx components won't do anything.
    For testing a single page, http://server:port/yourapp/faces/TestAction?view=/test1.jsp
    For testing more pages, http://server:port/yourapp/faces/TestAction?suite=/suite1.xml and write file:
    * suite1.xml
    <?xml version='1.0' encoding='UTF-8'?>
    <TestSuite>
       <page>/test1.jsp</page>
       <page>/test2.jsp</page>
    </TestSuite> After running this test suite in sun jsf1.0 runtime, the result comes:
    <?xml version="1.0" encoding="UTF-8" ?>
    <Test suite="/suite1.xml">
      <Page id="/test1.jsp">
        <Action id="_id13" time="0 hour(s) 0 minute(s) 0 second(s) 31 millisecond(s)" description="Test Sumbit">
          <Assert id="_id5" description="InputText1">
             <afterUpdateModelValues pass="true" />
          </Assert>
          <Assert id="_id9" description="Input2 Class Name">
             <afterUpdateModelValues pass="true" />
          </Assert>
          <Assert id="_id6" description="InputText1">
             <afterRenderResponse pass="true" />
          </Assert>
          <Assert id="_id10" description="InputText2 value in afterRenderResponse phase">
             <afterRenderResponse pass="true" />
          </Assert>
          <Assert id="_id11" description="InputText2 Style">
             <afterRenderResponse pass="false" />
          </Assert>
        </Action>
      </Page>
      <Page id="/test2.jsp">
      </Page>
    </Test> So far, if you think this idea is good for you, you can get the src code at the end of this post.
    Furthermore, you can make improvement to this as well, such as implement concurrent and repeatable test.
    Anyway, don't expect this two days prototype is quite robust, and coding is not my day to day work either.
    If you have any questions or idea, please drop me a line: [email protected], [email protected]
    *  jsftest.tld
    <?xml version="1.0"?>
    <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
    "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
    <taglib>
         <tlib-version>1.0</tlib-version>
         <jsp-version>1.2</jsp-version>
         <short-name>test</short-name>
         <uri>http://www.yourcompany.com/jsf/test</uri>
         <display-name>JSF Test Tag Library</display-name>
         <description></description>
         <tag>
              <name>action</name>
              <tag-class>com.yourcompany.jsf.ui.test.taglib.ActionTag</tag-class>
              <body-content>empty</body-content>
              <display-name>Action</display-name>
              <description>JSF test submit action</description>
              <attribute>
                   <name>binding</name>
                   <required>false</required>
                   <rtexprvalue>true</rtexprvalue>
              </attribute>
              <attribute>
                   <name>id</name>
                   <required>false</required>
                   <rtexprvalue>true</rtexprvalue>
              </attribute>
              <attribute>
                   <name>description</name>
                   <required>false</required>
                   <rtexprvalue>true</rtexprvalue>
              </attribute>
         </tag>     
         <tag>
              <name>assert</name>
              <tag-class>com.yourcompany.jsf.ui.test.taglib.AssertTag</tag-class>
              <body-content>empty</body-content>
              <display-name>Assert</display-name>
              <description>JSF test assertion</description>
              <attribute>
                   <name>binding</name>
                   <required>false</required>
                   <rtexprvalue>true</rtexprvalue>
              </attribute>
              <attribute>
                   <name>id</name>
                   <required>false</required>
                   <rtexprvalue>true</rtexprvalue>
              </attribute>
              <attribute>
                   <name>actions</name>
                   <required>false</required>
                   <rtexprvalue>true</rtexprvalue>
                            <description>default value is "all", means all actions, use "," as delimeter</description>
              </attribute>
              <attribute>
                   <name>phase</name>
                   <required>false</required>
                   <rtexprvalue>true</rtexprvalue>
                            <description>effective value can be anyone of: afterRestoreView,
                                   beforeApplyRequestValues, afterApplyRequestValues,
                                   beforeProcessValidations, afterProcessValidations,
                                   beforeUpdateModelValues,  afterUpdateModelValues,
                                   beforeInvokeApplication,  afterInvokeApplication,
                                   beforeRenderResponse,     afterRenderResponse
                                 The default value is afterRenderResponse, this assertion will be applied to HtmlElement rather than JSF Component.
                            </description>
              </attribute>
              <attribute>
                   <name>value</name>
                   <required>false</required>
                   <rtexprvalue>true</rtexprvalue>
                            <description>must be boolean, means pass test or not</description>
              </attribute>
              <attribute>
                   <name>var</name>
                   <required>false</required>
                   <rtexprvalue>true</rtexprvalue>
                            <description>variable name, used to define a request attribute which can be used in valueBinding language</description>
              </attribute>
              <attribute>
                   <name>valueAttribute</name>
                   <required>false</required>
                   <rtexprvalue>true</rtexprvalue>
                            <description>The default is "value".
                                         var will be bound to this attribute.
                                         var will be bound to the rendered HtmlElement if the phase="afterRenderResponse",
                                         otherwise var will be bound to parent component.
                            </description>
              </attribute>
              <attribute>
                   <name>postback</name>
                   <required>false</required>
                   <rtexprvalue>true</rtexprvalue>
                            <description>The default is "true".
                                         Currently only support true;
                            </description>
              </attribute>
              <attribute>
                   <name>description</name>
                   <required>false</required>
                   <rtexprvalue>true</rtexprvalue>
              </attribute>
         </tag>
         <tag>
              <name>parameter</name>
              <tag-class>com.yourcompany.jsf.ui.test.taglib.ParameterTag</tag-class>
              <body-content>empty</body-content>
              <display-name>Set</display-name>
              <description>JSF test request parameter setter</description>
              <attribute>
                   <name>binding</name>
                   <required>false</required>
                   <rtexprvalue>true</rtexprvalue>
              </attribute>
              <attribute>
                   <name>id</name>
                   <required>false</required>
                   <rtexprvalue>true</rtexprvalue>
              </attribute>
              <attribute>
                   <name>actions</name>
                   <required>false</required>
                   <rtexprvalue>true</rtexprvalue>
                            <description>default value is "all", means all actions, use "," as delimeter</description>
              </attribute>
              <attribute>
                   <name>name</name>
                   <required>true</required>
                   <rtexprvalue>true</rtexprvalue>
              </attribute>
              <attribute>
                   <name>value</name>
                   <required>true</required>
                   <rtexprvalue>true</rtexprvalue>
              </attribute>
         </tag>
         <tag>
              <name>set</name>
              <tag-class>com.yourcompany.jsf.ui.test.taglib.SetTag</tag-class>
              <body-content>empty</body-content>
              <display-name>Set</display-name>
              <description>JSF test component value setter</description>
              <attribute>
                   <name>binding</name>
                   <required>false</required>
                   <rtexprvalue>true</rtexprvalue>
              </attribute>
              <attribute>
                   <name>id</name>
                   <required>false</required>
                   <rtexprvalue>true</rtexprvalue>
              </attribute>
              <attribute>
                   <name>actions</name>
                   <required>false</required>
                   <rtexprvalue>true</rtexprvalue>
                            <description>default value is "all", means all actions, use "," as delimeter</description>
              </attribute>
              <attribute>
                   <name>value</name>
                   <required>true</required>
                   <rtexprvalue>true</rtexprvalue>
              </attribute>
         </tag>
    </taglib>
    *  faces-config.xml
    <?xml version="1.0"?>
    <!DOCTYPE faces-config PUBLIC
      "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
      "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
    <faces-config>
      <component>
        <component-type>com.yourcompany.jsf.ui.test.Action</component-type>
        <component-class>com.yourcompany.jsf.ui.test.component.Action</component-class>
      </component>
      <component>
        <component-type>com.yourcompany.jsf.ui.test.Assert</component-type>
        <component-class>com.yourcompany.jsf.ui.test.component.Assert</component-class>
      </component>
      <component>
        <component-type>com.yourcompany.jsf.ui.test.Parameter</component-type>
        <component-class>com.yourcompany.jsf.ui.test.component.Parameter</component-class>
      </component>
      <component>
        <component-type>com.yourcompany.jsf.ui.test.Set</component-type>
        <component-class>com.yourcompany.jsf.ui.test.component.Set</component-class>
      </component>
      <lifecycle>
          <phase-listener>com.yourcompany.jsf.ui.test.listener.TestPhaseListener</phase-listener>
          <phase-listener>com.yourcompany.jsf.ui.test.listener.TestAssertPhaseListener</phase-listener>
      </lifecycle>
    </faces-config>
    *  TestPhaseListener.java
    package com.yourcompany.jsf.ui.test.listener;
    import java.io.InputStream;
    import java.lang.reflect.Method;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Iterator;
    import java.util.List;
    import javax.faces.application.ViewHandler;
    import javax.faces.component.UIComponent;
    import javax.faces.component.UIViewRoot;
    import javax.faces.context.FacesContext;
    import javax.faces.context.ResponseWriter;
    import javax.faces.event.PhaseEvent;
    import javax.faces.event.PhaseId;
    import javax.faces.event.PhaseListener;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import org.w3c.dom.Document;
    import org.w3c.dom.NodeList;
    import org.w3c.dom.Text;
    import com.meterware.httpunit.HTMLElement;
    import com.meterware.httpunit.PostMethodWebRequest;
    import com.meterware.httpunit.WebConversation;
    import com.meterware.httpunit.WebRequest;
    import com.meterware.httpunit.WebResponse;
    import com.sun.faces.renderkit.html_basic.HtmlResponseWriter;
    import com.yourcompany.jsf.ui.component.UIIterate;
    import com.yourcompany.jsf.ui.test.component.Action;
    import com.yourcompany.jsf.ui.test.component.Assert;
    import com.yourcompany.jsf.ui.test.component.Parameter;
    import com.yourcompany.jsf.ui.test.component.Set;
    import com.yourcompany.jsf.ui.test.report.Constants;
    import com.yourcompany.jsf.ui.test.report.TestAction;
    import com.yourcompany.jsf.ui.test.report.TestAssert;
    import com.yourcompany.jsf.ui.test.report.TestPage;
    import com.yourcompany.jsf.ui.test.report.TestReport;
    import com.yourcompany.jsf.ui.util.ComponentUtil;
    public class TestPhaseListener implements PhaseListener {
         public TestPhaseListener() {
              super();
              // TODO Auto-generated constructor stub
         /* (non-Javadoc)
          * @see javax.faces.event.PhaseListener#afterPhase(javax.faces.event.PhaseEvent)
         public void afterPhase(PhaseEvent event) {
              if(-1 != event.getFacesContext().getViewRoot().getViewId().indexOf("TestAction")){
                   FacesContext context =      event.getFacesContext();
                   ViewHandler vh = context.getApplication().getViewHandler();
                   HttpServletRequest request = (HttpServletRequest)context.getExternalContext().getRequest();
                   TestReport report = new TestReport();
                   request.getSession().setAttribute(Constants.TEST_REPORT_SESSION_ATTRIBUTE_ID, report);
                   String suitefile = request.getParameter("suite");
                   List pages = new ArrayList(5);
                   if(suitefile==null){
                        pages.add(request.getParameter("view"));
                   }else{
                        report.setSuiteId(suitefile);
                        try{
                             DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                          factory.setValidating(false);
                          factory.setNamespaceAware(false);
                          DocumentBuilder builder = factory.newDocumentBuilder();
                          InputStream ins = context.getExternalContext().getResourceAsStream(suitefile);
                          Document doc = builder.parse(ins);
                          NodeList pageNodes = doc.getElementsByTagName("page");
                          for(int i=0; i<pageNodes.getLength(); i++){
                               pages.add(((Text)pageNodes.item(i).getFirstChild()).getData());
                        }catch(Exception e){
                             report.setException(e);
                   for(Iterator p=pages.iterator(); p.hasNext(); ){
                        String viewId = (String)p.next();
                        UIViewRoot view = vh.restoreView(context, viewId);
                        if(view==null){
                             try{
                                WebConversation wc = new WebConversation();
                                wc.putCookie("JSESSIONID", request.getSession().getId());
                                String url = getUrl(request, viewId);
                                WebResponse wr = wc.getResponse(url);
                             }catch(Exception e){
                                  report.setException(e);
                             view = vh.restoreView(context, viewId);
                        try{
                             Method doActionMethod = TestPhaseListener.class.getDeclaredMethod("doAction", new Class[]{Action.class, FacesContext.class, HttpServletRequest.class, UIViewRoot.class, String.class});
                             ComponentUtil.iterateComponent(view, Action.class, this, doActionMethod, new Object[]{context, request, view, viewId});
                        }catch(Exception e){
                             report.setException(e);
                   //render report
                   renderReport(context, report);
                   request.getSession().removeAttribute(Constants.TEST_REPORT_SESSION_ATTRIBUTE_ID);
                   context.responseComplete();
         /* (non-Javadoc)
          * @see javax.faces.event.PhaseListener#beforePhase(javax.faces.event.PhaseEvent)
         public void beforePhase(PhaseEvent event) {
         /* (non-Javadoc)
          * @see javax.faces.event.PhaseListener#getPhaseId()
         public PhaseId getPhaseId() {
               return PhaseId.RESTORE_VIEW;
         private String getUrl(HttpServletRequest request, String viewId){
              return request.getScheme()+"://" + request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/faces"+viewId;
         protected void doAction(Action action, FacesContext context, HttpServletRequest request, UIViewRoot view, String viewId){
              try{
                      WebConversation wc = new WebConversation();
                      wc.putCookie("JSESSIONID", request.getSession().getId());
                      String url = getUrl(request, viewId);
                      WebRequest wrq = new PostMethodWebRequest(url);
                      wrq.setParameter(Constants.TEST_VIEW_PARAMETER, viewId);
                      wrq.setParameter(Constants.TEST_ACTION_PARAMETER, action.getId());
                      //set parameters
                      try{
                           Method doParameterMethod = TestPhaseListener.class.getDeclaredMethod("doParameter", new Class[]{Parameter.class, String.class, WebRequest.class});
                           ComponentUtil.iterateComponent(view, Parameter.class, this, doParameterMethod, new Object[]{action.getId(), wrq});
                      }catch(Exception e){
                           e.printStackTrace();
                      //set attributes
                      //set values
                      try{
                           Method doSetMethod = TestPhaseListener.class.getDeclaredMethod("doSet", new Class[]{Set.class, FacesContext.class, String.class, WebRequest.class});
                           ComponentUtil.iterateComponent(view, Set.class, this, doSetMethod, new Object[]{context, action.getId(), wrq});
                      }catch(Exception e){
                           e.printStackTrace();
                      //do test actions
                      String formId = null;
                      if(formId!=null)wrq.removeParameter(formId);
                      formId = ComponentUtil.getForm(action).getClientId(context);
                      wrq.setParameter(formId, action.getParent().getClientId(context));
                      long start = System.currentTimeMillis();
                      WebResponse wrp = wc.getResponse(wrq);
                      //System.out.println(wrp.getText());
                      //do assertions
                      try{
                           Method doAssertMethod = TestPhaseListener.class.getDeclaredMethod("doAssert", new Class[]{Assert.class, FacesContext.class, HttpServletRequest.class, String.class, String.class, String.class, WebResponse.class});
                           ComponentUtil.iterateComponent(view, Assert.class, this, doAssertMethod, new Object[]{context, request, viewId, action.getId(), action.getDescription(), wrp});
                      }catch(Exception e){
                           e.printStackTrace();
                      TestReport report = (TestReport)request.getSession().getAttribute(Constants.TEST_REPORT_SESSION_ATTRIBUTE_ID);
                     report.getPage(viewId).getAction(action.getId()).setTime(System.currentTimeMillis()-start);
                   }catch(Exception e){
                        e.printStackTrace();
         protected void doParameter(Parameter parameter, String actionId, WebRequest wrq){
               if("all".equals(parameter.getActions()) || Arrays.asList(parameter.getActions().split(",")).contains(actionId))wrq.setParameter(parameter.getName(), parameter.getValue());
         protected void doSet(Set set, FacesContext context, String actionId, WebRequest wrq){
               if("all".equals(set.getActions()) || Arrays.asList(set.getActions().split(",")).contains(actionId))wrq.setParameter(set.getParent().getClientId(context), set.getValue());
         protected void doAssert(Assert ast, FacesContext context, HttpServletRequest request, String viewId, String actionId, String actionDescription, WebResponse wrp){
              if(("all".equals(ast.getActions()) || Arrays.asList(ast.getActions().split(",")).contains(actionId)) && "afterRenderResponse".equals(ast.getPhase())){
                    TestReport report = (TestReport)request.getSession().getAttribute(Constants.TEST_REPORT_SESSION_ATTRIBUTE_ID);
                    try{
                         HTMLElement targetElement = wrp.getElementWithID(ast.getParent().getClientId(context));
                         if(targetElement==null)targetElement = wrp.getElementsWithName(ast.getParent().getClientId(context))[0];
                         if(targetElement==null)request.setAttribute(ast.getVar(), null);
                         else request.setAttribute(ast.getVar(), targetElement.getAttribute(ast.getValueAttribute()));
                         //report assert
                         report.report(viewId, actionId, actionDescription, ast.getId(), ast.getDescription(), ast.getPhase(), (Boolean)ast.getValue(), null);
                    }catch(Exception e){
                         report.report(viewId, actionId, actionDescription, ast.getId(), ast.getDescription(), ast.getPhase(), Boolean.FALSE, e);
         protected void renderReport(FacesContext context, TestReport report){
              try{
                   HttpServletResponse response = (HttpServletResponse)context.getExternalContext().getResponse();
                   response.setContentType("text/xml; charset=UTF-8");
                   response.setHeader("Cache-Control", "no-cache");
                   ResponseWriter writer = new HtmlResponseWriter(response.getWriter(), null, null);
                   context.setResponseWriter(writer);
                   writer.startDocument();
                   writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
                   writer.startElement("Test", null);
                   if(report.getSuiteId()!=null)writer.writeAttribute("suite", report.getSuiteId(), null);
                   for(Iterator p=report.listPages().iterator(); p.hasNext(); ){
                        TestPage page = (TestPage)p.next();
                        writer.startElement("Page", null);
                        writer.writeAttribute("id", page.getViewId(), null);
                        for(Iterator i=page.listActions().iterator(); i.hasNext(); ){
                             TestAction action = (TestAction)i.next();
                             writer.startElement("Action", null);
                             writer.writeAttribute("id", action.getId(), null);
                             writer.writeAttribute("time", getElapsedTime(action.getTime()), null);
                             if(action.getDescription()!=null)writer.writeAttribute("description", action.getDescription(), null);
                             for(Iterator j=action.getAsserts().values().iterator(); j.hasNext(); ){
                                  TestAssert ast = (TestAssert)j.next();
                                  writer.startElement("Assert", null);
                                  writer.writeAttribute("id", ast.getId(), null);
                                  if(ast.getDescription()!=null)writer.writeAttribute("description", ast.getDescription(), null);
                                  for(Iterator k=ast.getStatus().keySet().iterator(); k.hasNext(); ){
                                       String phase = (String)k.next();
                                       writer.startElement(phase, null);
                                       writer.writeAttribute("pass", ast.getStatus().get(phase).toString(), null);
                                       writer.endElement(phase);
                                  if(ast.getException()!=null){
                                       writer.startElement("Exception", null);
                                       StackTraceElement[] stack = ast.getException().getStackTrace();
                                       for(int m=0; m<stack.length; m++){
                                            writer.write(stack[m].toString());
                                            writer.write("\r\n");
                                       writer.endElement("Exception");
                                  writer.endElement("Assert");
                             if(action.getException()!=null){
                                  writer.startElement("Exception", null);
                                  StackTraceElement[] stack = action.getException().getStackTrace();
                                  for(int m=0; m<stack.length; m++){
                                       writer.write(stack[m].toString());
                                       writer.write("\r\n");
                                  writer.endElement("Exception");
                             writer.endElement("Action");
                        if(page.getException()!=null){
                             writer.startElement("Exception", null);
                             StackTraceElement[] stack = page.getException().getStackTrace();
                             for(int m=0; m<stack.length; m++){
                                  writer.write(stack[m].toString());
                                  writer.write("\r\n");
                             writer.endElement("Exception");
                        writer.endElement("Page");
                   if(report.getException()!=null){
                        writer.startElement("Exception", null);
                        StackTraceElement[] stack = report.getException().getStackTrace();
                        for(int m=0; m<stack.length; m++){
                             writer.write(stack[m].toString());
                             writer.write("\r\n");
                        writer.endElement("Exception");
                   writer.endElement("Test");
                   writer.endDocument();
                   response.getWriter().flush();
                   response.getWriter().close();
              }catch(Exception e){
                   e.printStackTrace();
          public static String getElapsedTime(long millis) {
                   long hours, minutes, seconds, ms;
                   hours = millis / 3600000;
                   millis = millis - (hours * 3600000);
                   minutes = millis / 60000;
                   millis = millis - (minutes * 60000);
                   seconds = millis / 1000;
                   ms = millis - (seconds * 1000);
                   return hours
                        + " hour(s) "
                        + minutes
                        + " minute(s) "
                        + seconds
                        + " second(s) "
                        + ms
                        + " millisecond(s)";
    *  TestAssertPhaseListener.java
    package com.yourcompany.jsf.ui.test.listener;
    import java.lang.reflect.Method;
    import java.util.Arrays;
    import javax.faces.component.UIViewRoot;
    import javax.faces.context.FacesContext;
    import javax.faces.event.PhaseEvent;
    import javax.faces.event.PhaseId;
    import javax.faces.event.PhaseListener;
    import javax.servlet.http.HttpServletRequest;
    import org.apache.commons.beanutils.PropertyUtils;
    import com.yourcompany.jsf.ui.test.component.Assert;
    import com.yourcompany.jsf.ui.test.report.Constants;
    import com.yourcompany.jsf.ui.test.report.TestReport;
    import com.yourcompany.jsf.ui.util.ComponentUtil;
    public class TestAssertPhaseListener implements PhaseListener {
         public TestAssertPhaseListener() {
              super();
              // TODO Auto-generated constructor stub
         /* (non-Javadoc)
          * @see javax.faces.event.PhaseListener#afterPhase(javax.faces.event.PhaseEvent)
         public void afterPhase(PhaseEvent event) {
              if(PhaseId.RENDER_RESPONSE.equals(event.getPhaseId()))return;
              iterateAssert(event, false);
         /* (non-Javadoc)
          * @see javax.faces.event.PhaseListener#beforePhase(javax.faces.event.PhaseEvent)
         public void beforePhase(PhaseEvent event) {
              if(PhaseId.RESTORE_VIEW.equals(event.getPhaseId()))return;
              iterateAssert(event, true);
         public PhaseId getPhaseId() {
               return PhaseId.ANY_PHASE;
         protected void iterateAssert(PhaseEvent event, boolean before){
              FacesContext context = event.getFacesContext();
              HttpServletRequest request = (HttpServletRequest)context.getExternalContext().getRequest();
              String viewId = request.getParameter(Constants.TEST_VIEW_PARAMETER);
              String actionId = request.getParameter(Constants.TEST_ACTION_PARAMETER);
              if(actionId!=null){
                   TestReport report = (TestReport)request.getSession().getAttribute(Constants.TEST_REPORT_SESSION_ATTRIBUTE_ID);
                   UIViewRoot view = context.getViewRoot();
                   if(view==null)return;
                   try{
                        Method doAssertMethod = TestAssertPhaseListener.class.getDeclaredMethod("doAssert", new Class[]{Assert.class, FacesContext.class, HttpServletRequest.class, String.class, String.class, String.class});
                        ComponentUtil.iterateComponent(view, Assert.class, this, doAssertMethod, new Object[]{context, request, viewId, actionId, this.getAssertPhase(event.getPhaseId(), before)});
                   }catch(Exception e){
                        report.getPage(viewId).getAction(actionId).setException(e);
         protected void doAssert(Assert ast, FacesContext context, HttpServletRequest request, String viewId, String actionId, String assertPhase){
               if(("all".equals(ast.getActions()) || Arrays.asList(ast.getActions().split(",")).contains(actionId)) && assertPhase.equals(ast.getPhase())){
                    TestReport report = (TestReport)request.getSession().getAttribute(Constants.TEST_REPORT_SESSION_ATTRIBUTE_ID);
                    try{
                         request.setAttribute(ast.getVar(), PropertyUtils.getProperty(ast.getParent(), ast.getValueAttribute()));
                         //report assert
                         report.report(viewId, actionId, null, ast.getId(), ast.getDescription(), ast.getPhase(), (Boolean)ast.getValue(), null);
                    }catch(Exception e){
                         report.report(viewId, actionId, null, ast.getId(), ast.getDescription(), ast.getPhase(), Boolean.FALSE, e);
         protected String getAssertPhase(PhaseId phaseId, boolean before){
              String perfix = before ? "before" : "after";
              if(PhaseId.RESTORE_VIEW.equals(phaseId))return perfix+"RestoreView";
              if(PhaseId.APPLY_REQUEST_VALUES.equals(phaseId))return perfix+"ApplyRequestValues";
              if(PhaseId.PROCESS_VALIDATIONS.equals(phaseId))return perfix+"ProcessValidations";
              if(PhaseId.UPDATE_MODEL_VALUES.equals(phaseId))return perfix+"UpdateModelValues";
              if(PhaseId.INVOKE_APPLICATION.equals(phaseId))return perfix+"InvokeApplication";
              if(before && PhaseId.RENDER_RESPONSE.equals(phaseId))return "beforeRenderResponse";
              return "";
    *  UIIterate.java
    // This class brings "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              

    To Neoreborn:
    If I understand right, Shale only provides some mock core JSF objects and extends JUnit so that you can do junit test to your java classes.
    What I concern is to test Pages(JSP) rather than java classes. I want to assert component attribute values within all lifecycle including rendered HTML script. Currently, there isn't any good tools to do this kind of JSP Unit test, am I right?

  • Weblogic 10 Probs Start Web App only if using 'Visual Web JavaServer Faces'

    There is no Errormessage in Netbeans IDE when I chose 'build' or 'undeploy and deploy'.
    If I use a simple Webapplication that does not use 'Visual Web JavaServer Faces'
    the war-file that netbeans ide creates and deploys in beas autodeploy directory can be executed in the linked page: http://localhost:7001/WebApplication9/
    But if I chose the option 'Visual Web JavaServer Faces' in the web application project the whole compile and deployment process completes fine, the war-file is distributed in the autodeploy dir, but it can be deployed automatically nor manually.
    In the Bea Weblogic Administration Console I get
    Messages
    An error occurred during activation of changes, please see the log for details.
    Failed to load webapp: 'WebApplication14.war'
    javax.faces.webapp.FacesServlet
    C:\BeaWebLogic\MyDeploy\WebApplication14.war.
    Please make sure that the annotations are valid. The error is javax.faces.webapp.FacesServlet>
    whole Errorlog
    Thanks in advance.
    [LoginFilter]: LoginFilter constructed ...
    <18.04.2008 12.53 Uhr CEST> <Notice> <Log Management> <BEA-170027> <The server i
    nitialized the domain log broadcaster successfully. Log messages will now be bro
    adcasted to the domain log.>
    <18.04.2008 12.53 Uhr CEST> <Notice> <WebLogicServer> <BEA-000365> <Server state
    changed to ADMIN>
    <18.04.2008 12.53 Uhr CEST> <Notice> <WebLogicServer> <BEA-000365> <Server state
    changed to RESUMING>
    <18.04.2008 12.53 Uhr CEST> <Notice> <Security> <BEA-090171> <Loading the identi
    ty certificate and private key stored under the alias DemoIdentity from the jks
    keystore file C:\BEAWEB~1\WLSERV~1.0\server\lib\DemoIdentity.jks.>
    <18.04.2008 12.53 Uhr CEST> <Notice> <Security> <BEA-090169> <Loading trusted ce
    rtificates from the jks keystore file C:\BEAWEB~1\WLSERV~1.0\server\lib\DemoTrus
    t.jks.>
    <18.04.2008 12.53 Uhr CEST> <Notice> <Security> <BEA-090169> <Loading trusted ce
    rtificates from the jks keystore file C:\BEAWEB~1\JROCKI~1\jre\lib\security\cace
    rts.>
    <18.04.2008 12.53 Uhr CEST> <Warning> <Server> <BEA-002611> <Hostname "localhost
    ", maps to multiple IP addresses: 164.24.95.242, 127.0.0.1>
    <18.04.2008 12.53 Uhr CEST> <Warning> <Server> <BEA-002611> <Hostname "W9G01486.
    bonn02.telekom.de", maps to multiple IP addresses: 164.24.95.242, 127.0.0.1>
    <18.04.2008 12.53 Uhr CEST> <Notice> <Server> <BEA-002613> <Channel "Default" is
    now listening on 164.24.95.242:7001 for protocols iiop, t3, ldap, snmp, http.>
    <18.04.2008 12.53 Uhr CEST> <Notice> <Server> <BEA-002613> <Channel "Default[1]"
    is now listening on 127.0.0.1:7001 for protocols iiop, t3, ldap, snmp, http.>
    <18.04.2008 12.53 Uhr CEST> <Notice> <Server> <BEA-002613> <Channel "DefaultSecu
    re" is now listening on 164.24.95.242:7002 for protocols iiops, t3s, ldaps, http
    s.>
    <18.04.2008 12.53 Uhr CEST> <Notice> <Server> <BEA-002613> <Channel "DefaultSecu
    re[1]" is now listening on 127.0.0.1:7002 for protocols iiops, t3s, ldaps, https
    .>
    <18.04.2008 12.53 Uhr CEST> <Notice> <WebLogicServer> <BEA-000331> <Started WebL
    ogic Admin Server "examplesServer" for domain "wl_server" running in Development
    Mode>
    <18.04.2008 12.53 Uhr CEST> <Notice> <WebLogicServer> <BEA-000365> <Server state
    changed to RUNNING>
    <18.04.2008 12.53 Uhr CEST> <Notice> <WebLogicServer> <BEA-000360> <Server start
    ed in RUNNING mode>
    <18.04.2008 13.13 Uhr CEST> <Warning> <netuix> <BEA-423420> <Redirect is execute
    d in begin or refresh action. Redirect url is /console/console.portal?_nfpb=true
    &_pageLabel=WebAppApplicationOverviewPage&WebAppApplicationOverviewPortlethandle
    =com.bea.console.handles.AppDeploymentHandle%28%22com.bea%3AName%3DWebApplicatio
    n14%2CType%3DAppDeployment%22%29.>
    <18.04.2008 13.13 Uhr CEST> <Error> <HTTP> <BEA-101371>
    <There was a failure when processing annotations for application
    C:\BeaWebLogic\MyDeploy\WebApplication14.war.
    Please make sure that the annotations are valid. The error is javax.faces.webapp.FacesServlet>
    <18.04.2008 13.13 Uhr CEST> <Error> <Deployer> <BEA-149265> <Failure occurred in
    the execution of deployment request with ID '1208517199484' for task '0'. Error
    is: 'weblogic.application.ModuleException: Failed to load webapp: 'WebApplicati
    on14.war''
    weblogic.application.ModuleException: Failed to load webapp: 'WebApplication14.w
    ar'
    at weblogic.servlet.internal.WebAppModule.prepare(WebAppModule.java:311)
    at weblogic.application.internal.flow.ScopedModuleDriver.prepare(ScopedM
    oduleDriver.java:176)
    at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(Modu
    leListenerInvoker.java:93)
    at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(Depl
    oymentCallbackFlow.java:360)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineD
    river.java:26)
    Truncated. see log file for complete stacktrace
    java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet
    at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(Generic
    ClassLoader.java:286)
    at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClass
    Loader.java:259)
    at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAw
    areClassLoader.java:54)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    Truncated. see log file for complete stacktrace
    >
    <18.04.2008 13.13 Uhr CEST> <Warning> <Deployer> <BEA-149004> <Failures were det
    ected while initiating distribute task for application 'WebApplication14'.>
    <18.04.2008 13.13 Uhr CEST> <Warning> <Deployer> <BEA-149078> <Stack trace for m
    essage 149004
    weblogic.application.ModuleException: Failed to load webapp: 'WebApplication14.w
    ar'
    at weblogic.servlet.internal.WebAppModule.prepare(WebAppModule.java:311)
    at weblogic.application.internal.flow.ScopedModuleDriver.prepare(ScopedM
    oduleDriver.java:176)
    at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(Modu
    leListenerInvoker.java:93)
    at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(Depl
    oymentCallbackFlow.java:360)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineD
    river.java:26)
    Truncated. see log file for complete stacktrace
    java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet
    at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(Generic
    ClassLoader.java:286)
    at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClass
    Loader.java:259)
    at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAw
    areClassLoader.java:54)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    Truncated. see log file for complete stacktrace
    >
    <18.04.2008 13.13 Uhr CEST> <Error> <Console> <BEA-240003> <Console encountered
    the following error weblogic.application.ModuleException: Failed to load webapp:
    'WebApplication14.war'
    at weblogic.servlet.internal.WebAppModule.prepare(WebAppModule.java:311)
    at weblogic.application.internal.flow.ScopedModuleDriver.prepare(ScopedM
    oduleDriver.java:176)
    at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(Modu
    leListenerInvoker.java:93)
    at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(Depl
    oymentCallbackFlow.java:360)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineD
    river.java:26)
    at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(Dep
    loymentCallbackFlow.java:56)
    at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(Dep
    loymentCallbackFlow.java:46)
    at weblogic.application.internal.BaseDeployment$1.next(BaseDeployment.ja
    va:615)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineD
    river.java:26)
    at weblogic.application.internal.BaseDeployment.prepare(BaseDeployment.j
    ava:191)
    at weblogic.application.internal.DeploymentStateChecker.prepare(Deployme
    ntStateChecker.java:147)
    at weblogic.deploy.internal.targetserver.AppContainerInvoker.prepare(App
    ContainerInvoker.java:61)
    at weblogic.deploy.internal.targetserver.operations.ActivateOperation.cr
    eateAndPrepareContainer(ActivateOperation.java:189)
    at weblogic.deploy.internal.targetserver.operations.ActivateOperation.do
    Prepare(ActivateOperation.java:87)
    at weblogic.deploy.internal.targetserver.operations.AbstractOperation.pr
    epare(AbstractOperation.java:217)
    at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploym
    entPrepare(DeploymentManager.java:719)
    at weblogic.deploy.internal.targetserver.DeploymentManager.prepareDeploy
    mentList(DeploymentManager.java:1186)
    at weblogic.deploy.internal.targetserver.DeploymentManager.handlePrepare
    (DeploymentManager.java:248)
    at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.pre
    pare(DeploymentServiceDispatcher.java:157)
    at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallb
    ackDeliverer.doPrepareCallback(DeploymentReceiverCallbackDeliverer.java:157)
    at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallb
    ackDeliverer.access$000(DeploymentReceiverCallbackDeliverer.java:12)
    at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallb
    ackDeliverer$1.run(DeploymentReceiverCallbackDeliverer.java:45)
    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTunin
    gWorkManagerImpl.java:464)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:200)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:172)
    Caused by: java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet
    at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(Generic
    ClassLoader.java:286)
    at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClass
    Loader.java:259)
    at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAw
    areClassLoader.java:54)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClass
    Loader.java:179)
    at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAw
    areClassLoader.java:35)
    at weblogic.servlet.internal.WebAnnotationProcessorImpl.processServlets(
    WebAnnotationProcessorImpl.java:214)
    at weblogic.servlet.internal.WebAnnotationProcessorImpl.processJ2eeAnnot
    ations(WebAnnotationProcessorImpl.java:197)
    at weblogic.servlet.internal.WebAnnotationProcessorImpl.processAnnotatio
    ns(WebAnnotationProcessorImpl.java:93)
    at weblogic.servlet.internal.WebAppServletContext.processAnnotations(Web
    AppServletContext.java:1270)
    at weblogic.servlet.internal.WebAppServletContext.<init>(WebAppServletCo
    ntext.java:408)
    at weblogic.servlet.internal.WebAppServletContext.<init>(WebAppServletCo
    ntext.java:452)
    at weblogic.servlet.internal.HttpServer.loadWebApp(HttpServer.java:402)
    at weblogic.servlet.internal.WebAppModule.registerWebApp(WebAppModule.ja
    va:582)
    at weblogic.servlet.internal.WebAppModule.prepare(WebAppModule.java:298)
    >

    Hi,
    make sure you created the parameter for the bind variable in the ViewObject. It is not enough to only add the bind parameter. It has to be created as well
    Frank

  • A question about Lifecycle of a JavaServer Faces.

    hello all
    i read "The JavaServer� Faces Technology Tutorial",and mazed about Lifecycle of a JavaServer Faces.
    It explains each of these lifecycle phases using the guessNumber example.
    and if i submit the greeting.jsp ,who can give me particular about the jsf done in order....and the first step :Reconstitute Component Tree reconstitute greeting.jsp 's component tree or response.jsp?..

    thanks!
    i have another question:when the action event or A value-changed event occured,any Standard Request Processing Lifecycle begin?and the step of Reconstitute Component Tree occured?and when occur action event and when occur application event if a button or hyperlink is clicked?and what differentness between the processing to action event and application event by jsf?

  • Stored procedure, EJB, JPA, and JavaServer Faces

    Hi!
    I am currently working on a Web application using EJB, JPA, and JavaServer Faces. A part of the
    business logic is already stored in the database as stored procedures, so we need to call those
    procedures (instead of named queries) through a EJB and represent the data on the web tier.
    Where can I find an extensive tutorial using this technology? There is no such tutorial in the Oracle Learning Library.
    Maybe somebody can provide a link and/or example.
    Thanks in advance for your help!

    Hi,
    http://download.oracle.com/docs/cd/B10464_05/web.904/b10313/queries.htm#1135305
    For more help, see the TopLink / JPA forum
    TopLink/JPA
    Frank

  • How to activate Face Time in india at idea network

    Dear Sir,
    I have iphone 4 original. i want to  activate face time in india on idea network. But always said not successfull. How to activate the face time i connected the to wifi also. I there other way to activate facetime on iphone4.
    Thanks
    Manoj

    iPhones from countries where FaceTime is not permitted cannot have it activated elsewhere.

  • Download javaServer faces business objects enterprise

    Post Author: gzofera
    CA Forum: JAVA
    hello, where do I download the javaServer face enterprise business objects?
    I am preparing an environment to start customizing web intelligence, and I lost well as to libraries, tools, etc.. which FDI sweat, ECLIPSE? NETBEANS? OTHER? WHERE THE PLUGINS FOR MEETING SET THE SDK? is there any tool that characterizes the Gazette to customize the WEBI? thanks

    Post Author: amr_foci
    CA Forum: JAVA
    i didnt know that there is something like that from Business Objects,  thats work in JSF layer
    but you can check you ESD if you've an account
    https://businessobjects.subscribenet.com/control/bobj/login
    good luck

  • [ANNOUNCE] JavaServer Faces Resources Page

    Hi Everyone,
    I've compiled a list of everything related to JavaServer Faces and put a page on my website for it.
    Here it is:
    http://www.jamesholmes.com/JavaServerFaces/
    If you see anything that I've missed, feel free to drop me a line.
    -James
    [email protected]

    well did you notice that JSF EA4 has just been released ?
    I have one more link (but in french) :
    http://www.builder.fr/story/0,,t541-s2134284,00.html
    It says "Struts is dead, live JSF" (bad translation maybe...)

  • JavaServer Faces or Struts - New insights anyone?

    Hello Everyone:
    JSP or Struts???!! I'm really lost.
    I've read almost every posting on the subject (on this and other forums), yet, I couldn't come with a solid conclusion (may be only inclinations).
    I've started developing my very first real-world web application which is to be up and running by December 2003. I've started reading on both Struts and JavaServer Faces so as to adopt either in that application.
    What complicates things is that I'm a new comer to the web-application world in general (let alone Struts and JSF).
    I'm inclined to use JSF (as it seems that it would be gaining more support and popularity in the near future), yet, It's still in the EA form, while Struts is matured and already popular.
    I'm in need of a Mentor's advice to direct me to the suitable technology as I regard this first project to be both an investment into my career and a robust/reliable front end to my capabilities.
    Appreciate your responses and suggestions. I also appreciate all your previous posts (especially Craig's ones), and apologize if this is an old topic.
    Kindest regards

    You must have read my posts then.
    I think JSF should be ALLWAYS compared to
    http://borland.com/products/downloads/download_csharpbuilder.html which is free (Borland C#) or
    http://www.asp.net/webmatrix/guidedtour/getstarted/tooloverview.aspx
    at all times, and people should pick the one that is cheaper in production or faster to develop on.
    It would be great to read someplace feature/cost comparison to
    http://borland.com/products/downloads/download_csharpbuilder.html
    I think if people are using EJB and/or Blueprints, they should use JSF (but wait till version 2.0?)
    If they are using Windows Servers, they should use Borland C#
    If you like JSF design and would like open source, this is most like JSF, IMO (note that it could support standards like XUL or X-Forms or WS/SOA):
    http://jakarta.apache.org/ecs
    My choice is this via SOA:
    http://examples.macromedia.com/petmarket/store.html
    Struts does have 6 books out and at least 4 places that offer training on it, and a production track record, it is an open standard, everyone (WW2, Spring, etc.) allways starts w/ "We are like Struts,... only better".
    .V

  • JavaServer Faces Development process

    Are there any guidelines / best practices how a JavaServer Faces development process can
    be established. Mainly I'm worry about the separation between
    HTML designer (page authors) and application developers.
    Is it a "good" procedure to let application developer create a sort of prototype including
    the JSP pages and MockBackingBeans to enable a reasonable
    preview for the page authors?
    Or are there any other recommended approaches, how this can be done?
    Thanks for any help in advance.

    http://www.javaworld.com/javaworld/jw-11-2002/jw-1129-jsf.html
    http://java.sun.com/j2ee/javaserverfaces
    1. Go to www.Google.com or www.yahoo.com
    2. Type JSF or Java Server Faces in search box field
    Please let me know , if you find some!!!

  • JavaServer Faces v1.0 tutorial

    Why sun is not releasing the tutorial for JavaServer Faces V1.0?
    Can anyone of you give me the tutorial for Server Faces V1.0. Any links??
    Regards
    Shaf

    See http://java.sun.com/j2ee/javaserverfaces/reference/docs/index.html, the section 'Articles' for the currently available set of documents.
    Also, http://java.sun.com/j2ee/javaserverfaces/download.html indicates that JSF Tutorial is going to be made available soon (see the sentence after the 'Download JSF 1.0 Reference Implementation' button. I think at this time we should be waiting for it to come to us!!!

  • JavaServer Faces and Struts

    For those of you interested in using JavaServer Faces and Struts together (and my mailbox indicates that this is quite a few people :-), I'm happy to announce the immediate availability of an integration library that allows you to use the EA3 release of JavaServer Faces with a recent nightly build (20030216 or later) of Struts 1.1 -- it will also work with the upcoming 1.1-rc2 and 1.1-final releases -- together. Nightly builds of the integration library are available at <http://jakarta.apache.org/builds/jakarta-struts/nightly/struts-faces/>.
    The sources for this package are in the Struts CVS repository, in the "contrib/struts-faces" directory, and will be included in the source nightly distributions starting with the 20030307 version. It is not currently planned to include the struts-faces integration library with binary distributions of Struts 1.1, since it is still an EA quality release.
    See the README.txt file (included in the nightly build) for more information on running the example application and using the integration library in your own applications.

    What are the reasons not to have extended
    RequestProcessor from Struts with the
    capabilities of the FacesServlet... a sort of
    "FacesProcessor" (extended the regular
    RequestProcessor)? (should be nice for views
    with no JSF components: in order not to execute
    FacesServlet for each views , event if there is
    no JSF component in the view)It turned out that I needed a customized RequestProcessor anyway (a couple of the processXxx methods had to work differently), but it actually would have been more work incorporating FacesServlet directly into it. In essence, there is now (in the combined version) a "front controller" for UI events , FacesServlet, and a "middle controller" for form submit events (RequestProcessor). When a UI event happens that just causes the current page to be redisplayed (think of a tree control where you click on the "expand this node" icon), you don't really want the Struts controller servlet to even be bothered by this request. Indeed, if you're using a presentation that was based on DHTML+Javascript, such an event would have been handled on the client anyway, and would never have been sent to the server at all.
    The combined approach still supports Faces and non-Faces pages, though. This means you can migrate one page at a time and test things (which is exactly what I did when I ported the pages of the example app).

  • JavaServer Faces and servlet???

    Dear All,
    I'm very new to J2EE. I'm wondering, when should we used Java Servlet?
    If we develop with JavaServer Faces technology, do we code any servlets? I came accross the FacesServlet. The book says that it is included with the JavaServer Faces API and it seems that I don't need to write any code for this class.
    I'm very confuse. PLease help me...

    did you maybe forget to specify the /faces/* prefix within the URL?
    You have to configure the faces servlet to a prefix path and specify it within your URLs...

Maybe you are looking for