Stack Pages

I have set up View Objects as nested View Object using View Links in application module, for 3 levels. However I want all the 3 view objects to be shown as a stacked view in the same level on same page.
To achieve this, I have created, in the application definition editor, I set the "Same Page" property of all the 3 Groups as true. Then, I created an Item Region for the the top level view object. I have then created Detail Group Region for the level 2 view object. And also a Detail Group Region for level 3 within the level 1 regions. This seems to be ok as the level 3 "group name" is available from the drop down list.
However when I try to generate this gives me an error : JAG-00100 Group Region 'Page3' refers to an non existing detail group. It does exist and the fact that it is available from the drop down list suggests that it is a bug in the JHeadStart generator. Can you confirm and maybe offer me a work around.
If I try to add the 3rd level group as a Detail Region under level 2 group, the tabs for 3rd level group are apearing under the 2nd Level Group Tab, which does not satisfy my requirement of having all the tabs in same level.

I was able to reproduce this behavior.
Thanks for reporting, we will fix this before the production release.
Steven Davelaar,
JHeadstart Team.

Similar Messages

  • Mission Control/ Expose issue with stacked pages hard to view. Please help

    Is it just me or is there a real issue with the way Mission Control/ Expose displays these stacked windows? For instance, I had about 6 finder windows open, showing 6 different folders on my Desktop. If I then use Mission Control to quickly access a particular folder, it displays all my finder windows together, stacked up on one another and this makes it almost impossible to view which particular folder i want. It doesnt have the folder names displayed so this is seriuosly time consuming now. Is this something im doing wrong, or is it a valid issue?
    many thanks

    If you are just trying to see all the Finder windows which are available, just invoke App expose. I use a 4 finger swipe down. If you are in finder, just swipe. If you are in another application, hover your mouse over the Finder icon in the dock and swipe. All the windows are easy to see.
    (You can, of course, do this with any application, not just the Finder.)
    charlie

  • Do Web pages for phones have to be Apps?

    I do not own a mobile phone that is web enabled, and I never designed a web page for phones, but now due to the steep learning curve, I need a quick fix.
    Reading the help in Dreamweaver 5.5, there is lots of information about creating the best  mobile sites, though at the moment, I don't understand a lot of it - but that's my fault.
    However, when I use someone else's phone to look at most existing sites that are just designed for computers to view, the phone has facilities that make the sites available.
    Lots of zooming and such which is a pain, but you usually can view them.
    It occurred to me that perhaps there is a position mid way between a stock web site and a fully fledged phone app could be a stop gap solution until the whole mess of media queries, and other phone related stuff is understood.
    My suggested solution is as follows:
    Provide seperate sets of pages for both types at suitable sizes ( max 320 wide for mobiles).
    Keep all graphics for phone pages to a minimum size and well optimised to allow for quick page loading.
    1.On the index page of the site, put a large link to the phone pages and one to the computer pages so that its easily seen by phone users
    2. Design the index page and all phone pages so that the content would fit on a 320 pixel wide screen.
    3. Have the first page after the index purely as the menu screen, with a list of links.
    4. Each link leads to a deck of stacked pages that that are serially linked back and forth, with a "return to first page" on each one, with the navigation being at the bottom (or the top?) of the page.
    To view pages, the phone user would have to select the phone link on the site's index page, then select from the menu to get to the first page of a topic. He can then flick through the linked set of pages and go back to the menu from any. The pages would fit most mobile phones, and no phone specific stuff wopuld be needed.
    I appreciate that this method would not provide the most sparkling of mobile web sites, and would require two sets of pages, which is a maintenance problem, but it ought to help phone users to surf my site until I can get up to speed with the mobile stuff.
    Question is - would it work?
    Your comments please?
    Howard Walker

    mhollis55 wrote:
    Frankly, if you simply do a website using HTML5, you're set for a mobile device. And Dreamweaver 5 and 5.5 both give you code-hinting and definitions for HTML5/CSS3.
    jQuery would be the "app" side of that, though if you are really looking to make an application that works on a mobile phone, your best method is to do it in Flash and then compile it using Air. Adobe has a complete discussion of what's required here.
    Hi mhollis55
    Could you tell me why you describe the jQuery mobile framework as an app?
    The framework uses html5, css3 and ARIA, and is designed to make the creation of mobile friendly web pages easier for those who do not wish to commit themselves to learning all the mobile specific features required by modern smartphones and now even supports many of the older smartphone devices, see - http://jquerymobile.com/
    PZ

  • Is it wise to chage site design from multiple page to single page scrollable design for SEO?

    I have a current site with multiple pages created in Muse.  From watching some tutorials I am beginning to believe that converting the site to a one page scrollable format would be more applicable for table and mobile applications.  My questions are these:
    By adding anchor points and links to the stacked pages will this act the same as independent pages for SEO, or will I lose all of the current web traction I have earned and be starting over?
    Is it commonly accepted that by converting to a one page format that it will be easier for search crawlers to rank my site?

    Hi,
    Single page websites can be great for new sites or for some special projects, but I won't recommend them as long-term solutions and, if you already have a multi-page website, I do not recommend switching to a single-page site.
    If your single page site has great content and good structure, google might provide same treatment as it does for various sub pages website.
    A useful Video by Matt Cutt, head of the webspam team at Google
    Search engines will index all the pages of your website, providing multiple opportunities for your site to come up in searches. When your site consists of only one page, a single page is exactly what you’ll have indexed.
    That means if you have many services, many products, single page design will really compromise your rank and result in search engine.
    Do let me know if you have some more questions.

  • Swipe up and down between pages

    I currently working on an HTML5 based iPad magazine layout. My goal at the moment is to have a single article occupy several vertically stacked pages. Each of these pages is measured out to be 768x1024.
    I made each page and converted them to symbols. I then vertically stacked them on top of each other. I animated the timeline for my verticle movements. Each move is 1s and simply slides the current page up, and slides the new page up from the bottom with ease in and ease out applied. Each animation start point is labeled as Part1, Part2, etc.
    Since my experience in javascript is extremely limited, I was hoping someone could point me in the right direction for how to code all of this. Basically I just want the user to open the page to part1, read the page, swipe their finger upwards, have part1 lift upwards and have part2 appear from the bottom. Converesely, if they swipe down, the opposite should occure (which I assume is just the animation played in reverse).
    Thank you in advance for any help! It is greatly appreciated.

    Man thanks for the response! I spent some time reading over and adapting TimJaramillo's swipe code bases as well and I think I have something working well. I'll certainly take a look at the resouces you've pointed me to and see if I can't add to or streamline the code. Here's the post I referenced.
    http://forums.adobe.com/message/4792796#4792796
    And here's my current code:
    // insert code to be run when the composition is fully loaded here
    // insert code for compositionReady event here
    // GLOBAL VARS --------------------------------------------
    this.activePart = 1;
    this.partCount = 2;
    // swipe
    this.swipeStartY;
    this.swipeEndY;
    this.swipePadding = 60;// prevent swipe when clicking
    // JUMP TO / PLAY --------------------------------------------
    this.jumpTo = function( arg )
              sym.play("part_"+arg);
    // ARROW BTNS --------------------------------------------
    this.onSwipeDown = function()
              if( this.activePart > 1 )
                        this.activePart--;
                        sym.playReverse()
    this.onSwipeUp = function()
              if( this.activePart < this.partCount )
                        this.activePart++;
                        sym.play()
    // SWIPE --------------------------------------------
    this.onSwipe = function()
              if( this.swipeStartY < this.swipeEndY - this.swipePadding )
                        this.onSwipeDown();
              }else if( this.swipeEndY < this.swipeStartY - this.swipePadding )
                        this.onSwipeUp();
    Thanks again for the assitance! It's greatly appreciated.

  • View stack creation policy

    I have a view stack named myViewStack. Now within the view
    stack i have components when i switch between the view stack views
    I want each component's creation complete to be executed. The
    myViewStack creationPolicy is set to all once a user logs into the
    program. Any ideas on how I would do this.
    Thanks....

    The problem is in one view stack page i have a drop down list
    that you can select different companies then in the other viewstack
    page it has a display of charts. So lets say the drop down country
    list is in selectedIndex=1 the charting is in selectedIndex=2 when
    i select different companies from the dropdown component in
    selectedindex=1 it will change the data in selectedindex=2

  • View stack issue creation

    Lets say you have the following view stack with the following
    components in it. When i turn on creationPolicy="all"
    Any of the components will not call their
    creationComplete="loadData()" any ideas as to why?

    The problem is in one view stack page i have a drop down list
    that you can select different companies then in the other viewstack
    page it has a display of charts. So lets say the drop down country
    list is in selectedIndex=1 the charting is in selectedIndex=2 when
    i select different companies from the dropdown component in
    selectedindex=1 it will change the data in selectedindex=2

  • BI Java and BI ABAP -RSPLAN issue

    Hi All
    We are working with BI system ,using BI 7.0 Java and BI ABAP as separate systems on same host.
    Already run the template intaller for BI Java and ABAP integration.
    But facing some issue ,when going ot BI ABAP and RSPLAN and clicking the Start Mideller
    it is opening a browser as http://host:8000/sap/public/myssocntl?sap-client-XXX
    Since this is not correct and it should open BI Java portal instead of ABAP stack page.
    Instead this should open a Url like this http://host:5XX00/webdynpro/dispatcher/sap.com/biplanworkbench1/Modeler?
    I check on BI ABAP system under SAP Reference IMG -> SAP Customizing Implementation Guide-> SAP NetWeaver _> Business Intelligence-> BI Integrated Planning -> Settings for Starting the Planning Modeler.
    There the default Url is BEx Portal Server and the url is        
    http://host:5XX00/webdynpro/dispatcher/sap.com/biplanworkbench1/Modeler
    Can anybody let me know why this is going to ABAP server instead it should go to Java.
    Regards
    Ajay
    Edited by: Ajay Sandal on Mar 10, 2009 2:31 PM

    Hi Ajay ..
    Good news that ur issue is resolved ..
    I have somewhat similar issue .. Hopu u can put some light ..
    I have Bi 7.o with Add on java  ,
    In RSPLAN from ABAP system , modular page is not coming . if i click on start moduler button in RSPLAN ..portal page is coming up and i have to give logging details .
    Please suggest .
    Thanks

  • Module Debug error and size issue

    OK here is my module.
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Module xmlns:mx="
    http://www.adobe.com/2006/mxml"
    layout="vertical" width="100%" height="100%">
    <mx:Panel id="sidebarPannel" cornerRadius="10"
    horizontalAlign="left" height="100%" title="Meetings"
    width="170" backgroundColor="#FFFFFF" color="#FFFFFF"
    borderThicknessBottom="2" borderThicknessLeft="2"
    borderThicknessRight="2" borderColor="#2C5C28"
    borderThickness="2">
    <mx:VBox height="100%" width="100%"
    horizontalAlign="center">
    <mx:TextArea id="sb_home"
    text="This is the sidebar with special links for the main
    application page."
    wordWrap="true" height="100%" width="100%" color="#000000"
    alpha="0.0"/>
    <mx:Image source="media/max2007/MAX07_B125x125.gif"/>
    </mx:VBox>
    </mx:Panel>
    </mx:Module>
    and here is the include...
    <mx:ViewStack left="10" top="10" bottom="10" right="10"
    id="sectionStack" width="200" height="200">
    <mx:Canvas label="meetingSection" width="100%"
    height="100%" backgroundColor="#DDDDDD">
    <mx:ModuleLoader url="modules/main/main.swf" width="100%"
    height="100%"/>
    </mx:Canvas>
    I am having two issues.
    1. When I select the view stack page it has a long pause and
    asks for the debugger IP via flash. :( ... not running in debug
    mode so this is frustrating. Yet, when I run in debug mode it seems
    to run like it should be otherwise. WHY is my module swf compiling
    to debug mode?
    2. The module when it does load isn't scaling to 100%. The
    same code outside the module scales. And ideas on this one?

    Hi there, ya i'm getting similar problems with my modules.
    Each <mx:Module> in my application has a defined width
    and height of 100%, absolute positioning.
    If i put explicit widths and heights, eg: <mx:Module
    width="500" height="250", it works. But not with 100% liquid
    width/heights.
    I am also loading my modules into a <mx:ModuleLoader />
    that has 100% width/heights on the main application. Should we
    submit this as a bug? Because in Design Mode it shows up just
    fine.

  • Mpss support on solaris 10

    I would like to enable large heap pages for an application that may be experiencing high TLB miss rates, but I am having difficulty getting the tools to manipulate the page size to work correctly.
    On SPARC, I can get the stack to use large pages, but not the heap. On x86, I cannot get either the stack or the heap to use large pages.
    Here is a transcript of some experiments to adjust the page size for 'cat', first run on SPARC, and then repeated on an x86 machine.
    user@sparc ~> cat /etc/release
    Solaris 10 1/06 s10s_u1wos_19a SPARC
    Copyright 2005 Sun Microsystems, Inc. All Rights Reserved.
    Use is subject to license terms.
    Assembled 07 December 2005
    user@sparc ~> cat
    ^Z
    Suspended
    user@sparc ~> pmap -s `pgrep cat` | egrep "stack|heap"
    0002A000 16K 8K rwx-- [ heap ]
    FFBFE000 8K 8K rw--- [ stack ]
    user@sparc ~> fg
    cat
    ^C
    user@sparc ~> pagesize -a
    8192
    65536
    524288
    4194304
    user@sparc ~> ( setenv LD_PRELOAD mpss.so.1 ; setenv MPSSHEAP 4M ; setenv MPSSSTACK 4M ; cat )
    ^Z
    Suspended
    user@sparc ~> pldd `pgrep cat`
    23276: cat
    /usr/lib/mpss.so.1
    /lib/libc.so.1
    /lib/libgen.so.1
    /platform/sun4u/lib/libc_psr.so.1
    user@sparc ~> pmap -s `pgrep cat` | egrep "stack|heap"
    0002A000 16K 8K rwx-- [ heap ]
    0002E000 3912K - rwx-- [ heap ]
    FF800000 4096K 4M rw--- [ stack ]
    user@sparc ~> fg
    ( setenv LD_PRELOAD mpss.so.1; setenv MPSSHEAP 4M; setenv MPSSSTACK 4M; cat )
    ^C
    user@sparc ~> ppgsz -o heap=4M,stack=4M cat
    ^Z
    Suspended
    user@sparc ~> pmap -s `pgrep cat` | egrep "stack|heap"
    0002A000 16K 8K rwx-- [ heap ]
    0002E000 3912K - rwx-- [ heap ]
    FF800000 4096K 4M rw--- [ stack ]
    user@sparc ~> fg
    ppgsz -o heap=4M,stack=4M cat
    ^C
    user@sparc ~>
    Here, using either mpss.so.1 or ppgsz, I can adjust the stack page size, but not the heap.
    The same set of tests run on x86:
    user@x86 ~> cat /etc/release
    Solaris 10 6/06 s10x_u2wos_09a X86
    Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
    Use is subject to license terms.
    Assembled 09 June 2006
    user@x86 ~> cat
    ^Z
    Suspended
    user@x86 ~> pmap -s `pgrep cat` | egrep "stack|heap"
    08047000 4K 4K rw--- [ stack ]
    0806A000 12K 4K rw--- [ heap ]
    user@x86 ~> fg
    cat
    ^C
    user@x86 ~> pagesize -a
    4096
    2097152
    user@x86 ~> ( setenv LD_PRELOAD mpss.so.1 ; setenv MPSSHEAP 2M ; setenv MPSSSTACK 2M ; cat )
    ^Z
    Suspended
    user@x86 ~> pldd `pgrep cat`
    19155: cat
    /usr/lib/mpss.so.1
    /lib/libc.so.1
    /lib/libgen.so.1
    user@x86 ~> pmap -s `pgrep cat` | egrep "stack|heap"
    08047000 4K 4K rw--- [ stack ]
    0806A000 12K 4K rw--- [ heap ]
    0806D000 1612K - rw--- [ heap ]
    user@x86 ~> fg
    ( setenv LD_PRELOAD mpss.so.1; setenv MPSSHEAP 2M; setenv MPSSSTACK 2M; cat )
    ^C
    user@x86 ~> ppgsz -o heap=2M,stack=2M cat
    ^Z
    Suspended
    user@x86 ~> pmap -s `pgrep cat` | egrep "stack|heap"
    08047000 4K 4K rw--- [ stack ]
    0806A000 12K 4K rw--- [ heap ]
    0806D000 1612K - rw--- [ heap ]
    user@x86 ~> fg
    ppgsz -o heap=2M,stack=2M cat
    ^C
    user@x86 ~>
    In this case, I cannot adjust either the heap or the stack size with either method.
    The sparc machine is an Ultra IIe. The x86 machine is an AMD Opteron(tm) Processor 146.
    Any insight would be appreciated.
    Thanks.

    your problem is aligment, the first heap/stack pages will be assigned before the mpss environment variables are read, it will not be aligned suitably for big pages so it will be small pages. If you then do a 8mb malloc you will see that the heap will grep by > 8m, it will grow in small pages to a 4mb alignment and then grow in 4mb pages, the same with the stack.
    #include <sys/types.h>
    #include <stdlib.h>
    #include <unistd.h>
    int
    main ( int argc,char *ragv[]) {
    char * fpp;
    int i;
    fpp = malloc(8192000);
    for ( i = 0; i < 8192000;i = i+4096) {
    fpp[i] = 23;
    printf("fpp @ 0x%p to 0x%lx\n",
    fpp, (uint32_t)fpp+8192000);
    pause();
    timu-home ksh: test1 &
    fpp @ 0x8060a08 to 0x8830a08
    [2] 3610
    timu-home ksh: pmap -xs 3610 | grep -i heap
    08061000 3708 3708 3708 - 4K rwx-- [ heap ]
    08400000 8192 8192 8192 - 4M rwx-- [ heap ]
    timu-home ksh:
    I suspect the same is true of the stack, if you keep recursing to a 4m aligned
    boundary it wil use 4m pages, else you can force it by moving your main to a
    thread and pass you own 4m aligned buffer to thr_create() to use as a stack.
    tim

  • Wizard problem

    I am trying to create a wizard based application. I have set up View Objects as nested View Object using View Links in application module, for 3 levels. The wizard style checkbox is checked at the top level
    The 2nd level are divided into 4 regions. Layout style is set a separate pages for regions. The 3rd level are set up a plain detail groups.
    This works ok.
    My problem is when i want to make a 3rd level detail group display as a wizard page between the level 2 regions. I create a new detail group region on level 2 and selected the 3rd level detail group from the drop down list. (to make it available i checked the same page option on the level 3 group).
    However when i run the app the detailed group region is not displayed. This appears to be a bug as the same functionality will work with stacked pages. I require that i can control the sequence in which the wizard pages are displayed. I look forward to your response.

    After creating a test case Steven Davelaar replied:
    "I was able to reproduce your problem using the testcase. We will fix it for the next patch release, expected in the first half of september."
    Unfortunately this problem does not seem to be resolved with the new version. As stated before this is a fundamental issue for our application.
    To recap problem it is where i want to create a region container in a wizard app to hold both an item region and a Detail Group Region.
    see below for the jheadstart generation errors we get:
    [XxHoldingPersonsVOApplicantGeneralDetails.jspx, default/pageComponent/groupRegion.vm] Velocity log [error] RHS of #set statement is null. Context will not be modified. default/pageComponent/groupRegion.vm [line 1, column 1]
    [XxHoldingPersonsVOApplicantGeneralDetails.jspx, default/pageComponent/groupRegion.vm] Velocity log [error] Method pushModelPointer threw exception for reference $JHS in template default/pageComponent/groupRegion.vm at [1,1]
    [XxHoldingPersonsVOApplicantGeneralDetails.jspx, default/pageComponent/groupRegion.vm] org.apache.velocity.exception.MethodInvocationException: Invocation of method 'pushModelPointer' in class oracle.jheadstart.dt.jag.engine.velocity.JagEngineFacade threw exception class java.lang.NullPointerException : null
    Thanks
    Alan

  • Unable to Login in Portal as Administrator or any other User

    When I try to login as Administrator in portal.. It do not display any error message but at top it still displays as GUEST only.. when i checked in I have cheked in log file PTMAchine.log it shows as 6/7/04 13:47:29- Connected as user 'Administrator' But doesnt display appropriate message on screen.
    I have checked in database that the User Administrator exits... Table Name - PTUSERS LoginName - Administrator Password - Enrypted Thanks

    Kalimuthu V wrote:
    Vimal,
    Are you getting any error stack or any particular error message other than what you mentioned?
    Btw, if it is after some change or something better you raise an SR with Oracle support to get this fixed.
    Thanks.
    With Regards,
    Kali.
    OSSi.hi kali
    No i didnt not get any error stack, page with above error only.
    Actually i was trying to use digitle signature based approval for workflow notification and it got errored out. i closed the window and try to login with sysadmin user it got above message, I tried after sometime n now i am able to login. I could not understand the behaviour.
    Regards

  • 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?

  • 3750 problem with gigastack

    Good morning,
    I have a stack of 4 3750. The models are:
    WS-C3750G-12S-Standard Image x 2
    WS-C3750-48TS-Standard Image x 1
    WS-C3750-48TS-Enanced Image x 1
    All of them are running IOS C3750-I9-M. When I connect them in a redundant configuration with other switching environment the Rapid spanning tree is not behaving properly. The redundant interfaces are changing state between forwarding and blocking. My suspect is that the stacking technology is not working properly (all the switches are stacked at the back with Cisco Stackwise technology). The spanning tree is not stable and could be for the different models in the gigastack. Did you get ever the same problem? Is there any raccomandation to not stack together different models? Any problem with the different IOS featuse set (enhanced again standard)?
    Any CCO link for this?
    Really thanks for your help.
    Matteo

    I would read thru the stacking pages and see if you can spot anything . Also the recomendation would to make sure the 3750 running the enhanced version should be the stackmaster if it is not already .
    http://www.cisco.com/en/US/products/hw/switches/ps5023/products_configuration_guide_chapter09186a00801cdee3.html#1156787

  • ECC6.0 EHP5 - Any ideas when it will be available.

    I'm presuming EHP5 will be based on NW EHP2 as EHP4 was based on NW EHP1.
    I've got people in the development team that want to look at the new workbench in NW EHP2. But can find nothing about NW 7.0 EHP2 or ECC6.0 EHP5 anywhere.
    Anyone got any ideas?
    Thanks.

    Yes I did.
    I also looked though the standard SDN Netweaver page and even the Support Pack Stack page. Nothing at all.
    Thanks.

Maybe you are looking for