Handling exception in custom components

Hello,
Is there any info about handling exceptions in custom components? I would like to expose some exceptions to the Livecycle process.
Thank you

I have faced this situation for a while and found solution.
1.Create your custom Exception say (custom exception)
2. Set the properties like errorcode,errormessage, and throwable (if u want to bubble up the exceptions).
3. Create a custom object to hold the results (i.e like a java bean)
4. In your custom component methods just return the custom object and set exception as a property.
for e.g.
public class CustomReturn {
private String result;
private CustomException exception;
//getters & setters
public class CustomException {
private int errorCode = -1;
private String errorMessage;
private Throwable error;
//getters & setters
public class CustomClass {
public CustomReturn testValue() {
CustomReturn returnValue = new CustomReturn();
try {
//perform operations
catch(Exception ex) {
CustomException cex = new CustomException ();
cex .setErrorCode(1000);
cex .setErrorMessage(ex.getMessage());
cex .setErr(ex);
returnValue .setException(cex);
return returnValue;
return returnValue;
As you see , you can check for the exception in your return type using the bean property.
This will overcome the limitation of not able to retrieve the error stack incase of errors with default livecycle components.
Hope this helps.
-Senthil

Similar Messages

  • Handling Exceptions in Custom Tags??

    Hi,
              what is the preferred way to handle an exception that is thrown from jsp
              code in the body of a custom tag? The code below obviously causes a null
              pointer exception inside of the custom tag. When the code executes, a
              ServletException ( javax.servlet.ServletException: runtime failure in custom
              tag 'golfPage' ) is thrown back. Is there any way to structure code so that
              you get a better idea of what actually went wrong in the body of the custom
              tag?
              <golf:golfPage navRoot="admin_overview" title="Admin Overview" >
              <br>
              <%
              Hashtable ht = null;
              ht.put("test","test null pointer");
              %>
              </golf:golfPage>
              

    Never mind... got the answer to my question:
    http://www.ajug.org/archive/ajug-members/10306/msg00030.html
    The encode methods are executed in the JSP which is why the implicit exception object is available... while the decode methods are executed as part of the Faces Servlet lifecycle and hence the exception object must be gotten from the request attribute...
    I guess I need to take Servlet 101 all over again...

  • Exception handling through custom components

    Please let me know if there is any info about handling exceptions using custom components?
    Please share if any sample references are available.
    Many Thanks.

    You should in fact never explicitly catch RuntimeExceptions or Errors, unless you have a really, really good excuse. RuntimeExceptions are a sign of a "developer error" and needs to be bugfixed by just adding solid prechecks, so let them go. Errors are in any way unrecoverable, so let them go as well.
    To avoid ArrayIndexOutOfBoundsException just add a precheck on the array length and so on.

  • How to handle events between two custom components?

    Hi ,
         i want to handle events between two custom components, example if an event is generated in one custom component ,and i want to handle it any where in the application.....can any one suggest me any tutorial or meterial in this concept...
    thanks

    Events don't really go sideways in ActionScript by default. They bubble upward. If you want to send an event sideways, you will probably have to coordinate with something higher up in the event hierarchy. You can send the event to a common ancestor, and then pass it down the hierarchy as a method argument.
    Another option is to use a framework that supports Injection. There are a number around these days. The one I'm most familiar with is Mate, which allows you to handle events and inject data in MXML. Mate is meant to be used as an MVC framework, and you may want to look into it if your application is complex, but you can also use it to coordinate global event handling if you don't need that level of structure.

  • Custom components handling during Portal upgrade from 7.0 to 7.3

    Greetings,
    I started the upgrade of our development portal from version 7.0 to 7.3. I'm stuck in the configuration step when the upgrade program asks what to do with the custom java components found in the system.
    I have 8 components for which I can only select Scan inbox or Remove. The problem is that I would like to keep them as-is but the option Keep does not appear in the combo box.
    Does anybody have an idea about how to keep those components as they are?
    thank you in advance,
    Sébastien

    Even i am running into same issue where it doesn't show the option to keep the custom components. Can i know how did you fix the issue?

  • Error while accessing application with custom components

    Hi experts,
    I have an application (HAP_MAIN_DOCUMENT) of component FPM_OIF_COMPONENT which uses a Webdynpro component with the same name (HAP_MAIN_DOCUMENT). This Webdynpro component (HAP_MAIN_DOCUMENT) uses 2 other components (HAP_DOCUMENT_BODY and HAP_DOCUMENT_HEADER).
    For my client requirement, i need to create the custom components by copying from standard components as the UI layout changes are quiet huge and not manageable with the enhancements. To accomodate this i have changed the standard configurations by replacing the standard web dynpro components with the custom ones copied. Apart fomr this there are no changes to the standard.
    While trying to access the application, i am getting the error as Null object reference. the details of the error is as below. Please advice.
    Portal Error
    Error when processing your request
    What has happened?
    The URL http://ddrsap12.dubal.domain:8001/sap/bc/webdynpro/sap/HAP_MAIN_DOCUMENT/ was not called due to an error.
    Note
    The following error text was processed in the system DSD : Access via 'NULL' object reference not possible.
    The error occurred on the application server ddrsap12_DSD_01 and in the work process 0 .
    The termination type was: RABAX_STATE
    The ABAP call stack was:
    Method: WDDOINIT of program /1BCWDY/LUR96POELQNL3TIUWPYS==CP
    Method: IF_WDR_VIEW_DELEGATE~WD_DO_INIT of program /1BCWDY/LUR96POELQNL3TIUWPYS==CP
    Method: DO_INIT of program CL_WDR_DELEGATING_VIEW========CP
    Method: INIT_CONTROLLER of program CL_WDR_CONTROLLER=============CP
    Method: INIT_CONTROLLER of program CL_WDR_VIEW===================CP
    Method: INIT of program CL_WDR_CONTROLLER=============CP
    Method: GET_VIEW of program CL_WDR_VIEW_MANAGER===========CP
    Method: BIND_ROOT of program CL_WDR_VIEW_MANAGER===========CP
    Method: INIT of program CL_WDR_VIEW_MANAGER===========CP
    Method: INIT_CONTROLLER of program CL_WDR_INTERFACE_VIEW=========CP
    ST22 Dump Analysis
    Short text
        Access via 'NULL' object reference not possible.
    What happened?
        Error in the ABAP Application Program
        The current ABAP program "/1BCWDY/LUR96POELQNL3TIUWPYS==CP" had to be
         terminated because it has
        come across a statement that unfortunately cannot be executed.
    Information on where terminated
        Termination occurred in the ABAP program "/1BCWDY/LUR96POELQNL3TIUWPYS==CP" -
         in "WDDOINIT".
        The main program was "SAPMHTTP ".
        In the source code you have the termination point in line 4640
        of the (Include) program "/1BCWDY/B_LUXVEOR5WUW66V6QRRNU".
        Termination occurred in a Web Dynpro application
          Web Dynpro Component          ZWD_HAP_DOCUMENT_HEADER
          Web Dynpro Controller         VW_HEADER_MAIN
        The termination is caused because exception "CX_SY_REF_IS_INITIAL" occurred in
        procedure "WDDOINIT" "(METHOD)", but it was neither handled locally nor
         declared
        in the RAISING clause of its signature.
        The procedure is in program "/1BCWDY/LUR96POELQNL3TIUWPYS==CP "; its source
         code begins in line
        4619 of the (Include program "/1BCWDY/B_LUXVEOR5WUW66V6QRRNU ".
    Active Calls/Events
    No.   Ty.          Program                             Include                             Line
          Name
       33 METHOD       /1BCWDY/LUR96POELQNL3TIUWPYS==CP    /1BCWDY/B_LUXVEOR5WUW66V6QRRNU       4640
          CL_VW_HEADER_MAIN_CTR=>WDDOINIT
          Web Dynpro Component          ZWD_HAP_DOCUMENT_HEADER
          Web Dynpro Controller         VW_HEADER_MAIN
       32 METHOD       /1BCWDY/LUR96POELQNL3TIUWPYS==CP    /1BCWDY/B_LUXVEOR5WUW66V6QRRNU         70
          CLF_VW_HEADER_MAIN_CTR=>IF_WDR_VIEW_DELEGATE~WD_DO_INIT
          Web Dynpro Component          ZWD_HAP_DOCUMENT_HEADER
          Web Dynpro Controller         VW_HEADER_MAIN
       31 METHOD       CL_WDR_DELEGATING_VIEW========CP    CL_WDR_DELEGATING_VIEW========CM003     3
          CL_WDR_DELEGATING_VIEW=>DO_INIT
       30 METHOD       CL_WDR_CONTROLLER=============CP    CL_WDR_CONTROLLER=============CM00Q     3
          CL_WDR_CONTROLLER=>INIT_CONTROLLER
       29 METHOD       CL_WDR_VIEW===================CP    CL_WDR_VIEW===================CM00K     5
          CL_WDR_VIEW=>INIT_CONTROLLER
       28 METHOD       CL_WDR_CONTROLLER=============CP    CL_WDR_CONTROLLER=============CM002     7
          CL_WDR_CONTROLLER=>INIT
       27 METHOD       CL_WDR_VIEW_MANAGER===========CP    CL_WDR_VIEW_MANAGER===========CM008    70
          CL_WDR_VIEW_MANAGER=>GET_VIEW
       26 METHOD       CL_WDR_VIEW_MANAGER===========CP    CL_WDR_VIEW_MANAGER===========CM005    23
          CL_WDR_VIEW_MANAGER=>BIND_ROOT
       25 METHOD       CL_WDR_VIEW_MANAGER===========CP    CL_WDR_VIEW_MANAGER===========CM00B    17
          CL_WDR_VIEW_MANAGER=>INIT
       24 METHOD       CL_WDR_INTERFACE_VIEW=========CP    CL_WDR_INTERFACE_VIEW=========CM004    11
          CL_WDR_INTERFACE_VIEW=>INIT_CONTROLLER
       23 METHOD       CL_WDR_CONTROLLER=============CP    CL_WDR_CONTROLLER=============CM002     7
          CL_WDR_CONTROLLER=>INIT
       22 METHOD       CL_WDR_VIEW_MANAGER===========CP    CL_WDR_VIEW_MANAGER===========CM008    70
          CL_WDR_VIEW_MANAGER=>GET_VIEW
    Thanks in advance,
    Regards,
    Ravi.

    Hi ,
    How are you able to configure Custom Web dynpro application to Appraisal document instead of HAP_MAIN_DOCUMENT. could you please share the steps. We have created custom application a copy of HAP_MAIN_DOCUMENT and the other two webdynpro components are also copied.
    We dont know how to link this to Appraisal template. BADI HRHAP00_BSP_TMPL is used to change application names for BSP application. How to change application name for Web dynpro ABAP. Please share the stpes which will help us
    Thanks and Regards,
    Kothand

  • Error while accessing application with the custom components

    Hi experts,
    I have an application (HAP_MAIN_DOCUMENT) of component FPM_OIF_COMPONENT which uses a Webdynpro component with the same name (HAP_MAIN_DOCUMENT). This Webdynpro component (HAP_MAIN_DOCUMENT) uses 2 other components (HAP_DOCUMENT_BODY and HAP_DOCUMENT_HEADER). For my client requirement, i need to create the custom components by copying from standard components as the UI layout changes are quiet huge and not manageable with the enhancements. To accomodate this i have changed the standard configurations by replacing the standard web dynpro components with the custom ones copied. Apart fomr this there are no changes to the standard.
    While trying to access the application, i am getting the error as Null object reference.
    the details of the error is as below. Please advice.
    Heading 1: h1. P:ortal Error
    The URL http://******************/sap/bc/webdynpro/sap/HAP_MAIN_DOCUMENT/ was not called due to an error.
    Note
    The following error text was processed in the system DSD : Access via 'NULL' object reference not possible.
    The error occurred on the application server ddrsap12_DSD_01 and in the work process 0 .
    The termination type was: RABAX_STATE
    The ABAP call stack was:
    Method: WDDOINIT of program /1BCWDY/LUR96POELQNL3TIUWPYS==CP
    Method: IF_WDR_VIEW_DELEGATE~WD_DO_INIT of program /1BCWDY/LUR96POELQNL3TIUWPYS==CP
    Method: DO_INIT of program CL_WDR_DELEGATING_VIEW========CP
    Method: INIT_CONTROLLER of program CL_WDR_CONTROLLER=============CP
    Method: INIT_CONTROLLER of program CL_WDR_VIEW===================CP
    Method: INIT of program CL_WDR_CONTROLLER=============CP
    Method: GET_VIEW of program CL_WDR_VIEW_MANAGER===========CP
    Method: BIND_ROOT of program CL_WDR_VIEW_MANAGER===========CP
    Method: INIT of program CL_WDR_VIEW_MANAGER===========CP
    Method: INIT_CONTROLLER of program CL_WDR_INTERFACE_VIEW=========CP
    Heading 2: h2. ST22 - Dump Analysis
    Error analysis
        An exception occurred that is explained in detail below.
        The exception, which is assigned to class 'CX_SY_REF_IS_INITIAL', was not
         caught in
        procedure "WDDOINIT" "(METHOD)", nor was it propagated by a RAISING clause.
        Since the caller of the procedure could not have anticipated that the
        exception would occur, the current program is terminated.
        The reason for the exception is:
        You attempted to use a 'NULL' object reference (points to 'nothing')
        access a component.
        An object reference must point to an object (an instance of a class)
        before it can be used to access components.
        Either the reference was never set or it was set to 'NULL' using the
        CLEAR statement.
    Information on where terminated
        Termination occurred in the ABAP program "/1BCWDY/LUR96POELQNL3TIUWPYS==CP" -
         in "WDDOINIT".
        The main program was "SAPMHTTP ".
        In the source code you have the termination point in line 4640
        of the (Include) program "/1BCWDY/B_LUXVEOR5WUW66V6QRRNU".
        Termination occurred in a Web Dynpro application
          Web Dynpro Component          ZWD_HAP_DOCUMENT_HEADER
          Web Dynpro Controller         VW_HEADER_MAIN
        The termination is caused because exception "CX_SY_REF_IS_INITIAL" occurred in
        procedure "WDDOINIT" "(METHOD)", but it was neither handled locally nor
         declared
        in the RAISING clause of its signature.
        The procedure is in program "/1BCWDY/LUR96POELQNL3TIUWPYS==CP "; its source
         code begins in line
        4619 of the (Include program "/1BCWDY/B_LUXVEOR5WUW66V6QRRNU ".
    Active Calls/Events
    No.   Ty.          Program                             Include                             Line
          Name
       33 METHOD       /1BCWDY/LUR96POELQNL3TIUWPYS==CP    /1BCWDY/B_LUXVEOR5WUW66V6QRRNU       4640
          CL_VW_HEADER_MAIN_CTR=>WDDOINIT
          Web Dynpro Component          ZWD_HAP_DOCUMENT_HEADER
          Web Dynpro Controller         VW_HEADER_MAIN
       32 METHOD       /1BCWDY/LUR96POELQNL3TIUWPYS==CP    /1BCWDY/B_LUXVEOR5WUW66V6QRRNU         70
          CLF_VW_HEADER_MAIN_CTR=>IF_WDR_VIEW_DELEGATE~WD_DO_INIT
          Web Dynpro Component          ZWD_HAP_DOCUMENT_HEADER
          Web Dynpro Controller         VW_HEADER_MAIN
       31 METHOD       CL_WDR_DELEGATING_VIEW========CP    CL_WDR_DELEGATING_VIEW========CM003     3
          CL_WDR_DELEGATING_VIEW=>DO_INIT
       30 METHOD       CL_WDR_CONTROLLER=============CP    CL_WDR_CONTROLLER=============CM00Q     3
          CL_WDR_CONTROLLER=>INIT_CONTROLLER
       29 METHOD       CL_WDR_VIEW===================CP    CL_WDR_VIEW===================CM00K     5
          CL_WDR_VIEW=>INIT_CONTROLLER
       28 METHOD       CL_WDR_CONTROLLER=============CP    CL_WDR_CONTROLLER=============CM002     7
          CL_WDR_CONTROLLER=>INIT
       27 METHOD       CL_WDR_VIEW_MANAGER===========CP    CL_WDR_VIEW_MANAGER===========CM008    70
          CL_WDR_VIEW_MANAGER=>GET_VIEW
       26 METHOD       CL_WDR_VIEW_MANAGER===========CP    CL_WDR_VIEW_MANAGER===========CM005    23
          CL_WDR_VIEW_MANAGER=>BIND_ROOT
       25 METHOD       CL_WDR_VIEW_MANAGER===========CP    CL_WDR_VIEW_MANAGER===========CM00B    17
          CL_WDR_VIEW_MANAGER=>INIT
       24 METHOD       CL_WDR_INTERFACE_VIEW=========CP    CL_WDR_INTERFACE_VIEW=========CM004    11
          CL_WDR_INTERFACE_VIEW=>INIT_CONTROLLER
       23 METHOD       CL_WDR_CONTROLLER=============CP    CL_WDR_CONTROLLER=============CM002     7
          CL_WDR_CONTROLLER=>INIT
       22 METHOD       CL_WDR_VIEW_MANAGER===========CP    CL_WDR_VIEW_MANAGER===========CM008    70
          CL_WDR_VIEW_MANAGER=>GET_VIEW
    Thanks In advance,
    Regards,
    Ravi.

    Hi, I'm closing this thread and opening the same in another as the content got pasted in reader un friendly format and i'm unable to change the format.
    Thanks,
    Ravi.

  • Component Panel ( Design mode) loosing custom components

    Wonder if anyone else encounter this phenomenon?
    After placing custom Flash components ( compiled intoa SWC
    file) in the project's <Libs> directory, they are available
    and working in Source mode, but you can't see them in the custom
    Folder (In the Design Mode). Only after closing and opening the
    project they appear.
    However, they keep disappearing ( randomly) from the folder,
    and only after Open/Close project they reappear. Other custom
    components such as MXML modules behave ok.
    As far as the application these components work fine and are
    recognized by the compiler.
    I'm using Stand Alone, FB3 version 1201207; on WXP Sp2.
    ( Reported this as a bug
    http://bugs.adobe.com/jira/browse/FB-11554
    Did anyone else experienced this (similar) behavior ?

    Same problem here. Except I have even less luck getting it to
    consistently appear than you. Sometimes it works great, other times
    they vanish and nothing I can do to get them to return. MXML
    modules seem fine.. it's just with the Flash SWC files. Plus
    sometimes I have no visual indication in design view of the Flash
    module on my canvas, and other times it displays. (This is with no
    changes to the SWC file at all). But it always runs okay.

  • Handle Exceptions during the Render Response phase

    Hi,
    How can we handle exceptions that occur during the render response phase, e.g. to redirect the user to an error page?
    In our application we have an unbounded taskflow with one page (jspx). It's quite a simple page, as it only displays some data from a managed bean.
    When we run the application and e.g. throw explicitly a RuntimeException form one of the getters, all we get is the 'progress indicator', not even a stacktrace on the page (only in the logs).
    Unfortunately, it doesn't seem possible to handle the exception, not via the taskflow Exception Handler, the web.xml error-page or a custom ADF Controller exception handler. In the latter case, we can catch the exception but when we try a redirect (on the external context or response) we get a 'java.lang.IllegalStateException: Response already committed' exception.
    Any suggestions?
    Ciao
    Aino

    Hi Aino
    I'm not sure if that's the problem, but I recently read somewhere (wish I remember where) an IllegalStatementException that was throwing because there was no entry page defined in web.xml.
    If you are trying that, remember that web.xml doesn't support .jspx pages.
    Edited by: TheCrusader on 09-jul-2010 15:03
    Edited by: TheCrusader on 09-jul-2010 15:10

  • How to handle exceptions in web dyn pro

    Hi Frndz....
                     Can any one kindly xplain how to handle exceptions in web dyn pro..like we hav exceptionhandling in java ....so is there any for NWDS
    THANKS & REGARDS
    Rajesh

    Hi,
    Web Dynpro Java is basically java only.i.e You program in java. Hence exceptions are supported in the same way as in java i.e. via try,catch and finally block.
    Additionally,
    In 04/04s if you create a method in any controller in web dynpro you cann't specify exception that can be thrown in the method. This is now possible in new programming web dynpro model in CE.
    Hence when creating a method you can also specify custom or core java (lib)excetions.
    Regards,
    Ashwani Kr Sharma

  • Handling exceptions for a event handler method.

    Hi Mates,
                    I have two custom container in which i am displaying an alv grid usind objects. when a double click event is performed in one of the alv the other alv should be displayed. I now have to handle exceptions of the class  CX_SY_DYN_CALL_ILLEGAL_TYPE. This is raised for an invalid parameter type when calling a method dynamically. I cannot use the keyword "RAISING" in the definition of the event handler method. i checked with the syntax of the method definition in abap dictionary, there were no addition "RAISING" for an event handler method. please provide me with the solution (a sample code would do.)

    Hello,
    May be you should read about the TRY ... CATCH block which is used for handling exceptions.
    Basic construct of your code should look like this:
    TRY.
    " Your Dynamic Method call
      CATCH CX_SY_DYN_CALL_ILLEGAL_TYPE.
    ENDTRY.
    If you want to get the error message text:
    DATA:
    lcx_excp TYPE REF TO CX_SY_DYN_CALL_ILLEGAL_TYPE,
    v_err_msg TYPE string.
    TRY.
    " Your Dynamic Method call
      CATCH CX_SY_DYN_CALL_ILLEGAL_TYPE INTO lcx_excp.
      v_err_msg = lcx_excp->get_text( ).
    ENDTRY.

  • Handle Exception from LCDS

    Hello,
    I am using Flex 4 with LCDS 3. I am having problems with properly handling 
    exceptions. 
    I have a simple commit service like; 
    var commitToken:AsyncToken = 
    _serviceName.serviceControl.commit(); // Commit the change. 
    commitToken.addResponder(new AsyncResponder( 
    function (event:ResultEvent, 
    token:Object=null):void 
    Alert.show("DATA DELETED"); 
    function (event:FaultEvent, 
    token:Object=null):void 
    Alert.show("Save failed: " + 
    event.fault.faultString, "Error"); 
    _serviceName.serviceControl.revertChanges(); 
    Now when I try to delete a row which has a child record I get the following 
    error in my tomcat log; 
    hdr(DSEndpoint) = my-rtmp 
    hdr(DSId) = 9AFF219A-AB2A-3B60-D990-9E87A3D7CF71 
    java.lang.RuntimeException: Hibernate jdbc exception on operation=deleteItem 
    error=Could not execute JDBC batch update : sqlError = from SQLException: 
    java.sql.BatchUpdateException: ORA-02292: integrity constraint (CATEGORY_FK) 
    violated - child record found 
    followed by; 
    [LCDS]Serializing AMF/RTMP response 
    Version: 3 
    (Command method=_error (0) trxId=10.0) 
    (Typed Object #0 'flex.messaging.messages.ErrorMessage') 
    rootCause = (Typed Object #1 'org.omg.CORBA.BAD_INV_ORDER') 
    minor = 0 
    localizedMessage = "The Servant has not been associated with an ORB 
    instance" 
    message = "The Servant has not been associated with an ORB instance" 
    cause = null 
    completed = (Typed Object #2 'org.omg.CORBA.CompletionStatus') 
    destination = "CATEGORY" 
    headers = (Object #3) 
    correlationId = "D4B6573F-F8C2-0732-BD1C-6FD1C5979763" 
    faultString = "Error occurred completing a transaction" 
    messageId = "9AFF6D9A-3C1C-E99B-B00F-92E72069B64E" 
    faultCode = "Server.Processing" 
    timeToLive = 0.0 
    extendedData = null 
    faultDetail = null 
    clientId = "C2F15FE1-2977-23AA-1ADD-6FD1C096A82F" 
    timestamp = 1.281776280572E12 
    body = null 
    In flex in my "event" in the fault function I can only get general data like 
    "Error occurred completing a transaction", but I cannot access the error 
    "ORA-02292:...". 
    Is there a way to access it, as I need to handle multiple exceptions that Oracle 
    will catch such as duplicate ID.....

    Hi Hong,
    I can confirm that 0xE8010014 represents a driver fault. Unfortunately without a dump or some other trace file it is hard to track this down. You could create a dump file if you can reproduce it, upload it to your OneDrive and then post the link here, I
    can grab it and take a look.
    >>This is reported by users. Unfortunately I am unable to reproduce it.
    Could you please collect the OS version which have this issue?
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • XUL implementations and custom components

    I've been looking briefly into the myriad XUL implementations and one of my concerns is the ease of incorporating bespoke JComponent subclasses - and also bespoke Border and LayoutManager classes. And then doing things like implementing and using a custom JPanel subclass whilst being able to specify its contents in XML in the same way as a normal JPanel.
    Does anyone have experience with achieving the above in any of these, and how elegant is the solution?
    I note that Luxor will handle custom components, as will Ultrid - though the latter (sadly, as it looks rather nice) won't work for me as I need to deploy as an applet. Any others? In particular, SwiXML/AT? That looks interesting although the documentation is relatively sparse...
    Thanks

    Ah - looks like SwiXML has just what I want with regard to the components.

  • Cannot get facelets custom components to work

    Hi,
    I'm switching to facelets but I fail to get my custom components to work. I hope any of you can help me point out what is going wrong. My component is built into a seperate jar file:
    package be.xxx.web.tag;
    import java.io.IOException;
    import javax.faces.component.UIOutput;
    import javax.faces.context.FacesContext;
    import javax.faces.context.ResponseWriter;
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    public class IfTag extends UIOutput {
         public IfTag() {
              super();
              Log log = LogFactory.getLog(IfTag.class);
              log.debug("THIS IS THE IFTAG FACELETS IMPLEMENTATION");
              setRendererType(null);
         public boolean getRendersChildren() {
              return true;
         @Override
         public void encodeBegin(FacesContext facesContext) throws IOException {
              // We're rendering a table row
              facesContext.getResponseWriter().startElement("span", null);
         @Override
         public void encodeChildren(FacesContext facesContext) throws IOException {
              ResponseWriter writer = facesContext.getResponseWriter();
              writer.append("This if the IF tag");
         @Override
         public void encodeEnd(FacesContext facesContext) throws IOException {
              facesContext.getResponseWriter().endElement("span");
         @Override
         public String getFamily() {
              return COMPONENT_TYPE;
    }The taglib file in META-INF of the jar file:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE facelet-taglib PUBLIC "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN" "http://java.sun.com/dtd/facelet-taglib_1_0.dtd">
    <facelet-taglib>
         <namespace>http://www.xxx.be/jsf/mw</namespace>
         <tag>
              <tag-name>menu</tag-name>
              <component>
                   <component-type>be.xxx.web.Menu</component-type>
              </component>
         </tag>
         <tag>
              <tag-name>if</tag-name>
              <component>
                   <component-type>be.xxx.web.If</component-type>
              </component>
         </tag>
    </facelet-taglib>Also in META-INF of the same jar, a faces-config.xml:
    <?xml version="1.0" encoding="utf-8"?>
    <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
                  version="1.2">
      <component>
        <component-type>be.xxx.web.Menu</component-type>
        <component-class>be.xxx.web.tag.MenuTag</component-class>
      </component>
      <component>
        <component-type>be.xxx.web.If</component-type>
        <component-class>be.xxx.web.tag.IfTag</component-class>
      </component>
    </faces-config>Finally, in the main project where the jar with above files is used, I try to call a custom tag:
    <html xmlns="http://www.w3.org/1999/xhtml"
         xmlns:mw="http://www.xxx.be/jsf/mw"
         xmlns:ui="http://java.sun.com/jsf/facelets">
    <mw:if></mw:if>
    </html>The result is that the if tag just writed out nothing, so "<mw:if></mw:if>" in the output just becomes "".
    I haven't found a way to debug this either (as in: I don't think the java code is even executed), so any tips would be greatly appreciated!
    Thanks

    Looks like I posted the wrong class. Here is the problematic one:
    public class MenuTag extends FacesBean implements BodyTag {
         private transient PageContext pc = null;
         private transient Tag parent = null;
         private transient BodyContent bodyContent;
         public void setPageContext(PageContext p) {
              pc = p;
         public void setParent(Tag t) {
              parent = t;
         public Tag getParent() {
              return parent;
         public int doStartTag() throws JspException {
              String url = null;
              try {
                   WebSession ws = (WebSession) getBean("ws");
                   if (ws.isLoggedIn()) {
                        // Get the value of the applicable menu rule
                        url = ws.getPolicy().getMenu();
                        if (url != null && !"".equals(url)) {
                             // Some logic to get correct file
                             String inputLine;
                             while ((inputLine = in.readLine()) != null)
                                  pc.getOut().write(inputLine);
                             in.close();
                             // We printed the menu, so skip the default menu
                             // that is in this tag's body.
                             return SKIP_BODY;
                   } else {
                        getLog().info("The user is not logged in, reverting to default menu.");
              } catch (FileNotFoundException ex) {
                   getLog().warn("Menu file not found (" + url + "), reverting to default menu.");
              } catch (Exception ex) {
                   throw new JspTagException("Error when applying the menu rule.", ex);
              return EVAL_BODY_BUFFERED;
         public int doEndTag() throws JspException {
              try {
                   if (bodyContent != null) {
                        bodyContent.writeOut(bodyContent.getEnclosingWriter());
              } catch (IOException e) {
                   throw new JspException("Error: " + e.getMessage());
              return EVAL_PAGE;
         public void release() {
              pc = null;
              parent = null;
         private String resolveServerUrl() {
              HttpServletRequest req = (HttpServletRequest) FacesContext
                        .getCurrentInstance().getExternalContext().getRequest();
              String url = req.getScheme() + "://" + req.getServerName();
              if (req.getServerPort() != 80) {
                   url += ":" + req.getServerPort();
              return url;
         public void doInitBody() throws JspException {
         public void setBodyContent(BodyContent bc) {
              bodyContent = bc;
         public int doAfterBody() throws JspException {
              return 0;
    }So, problem is that this is not working in facelets as a component, while it did in JSP's.
    Can I get any hints what I am doing wrong here?
    Thanks

  • Handling exceptions at Sub-Process Level

    Can we handle exceptions at Sub-Process level itself? Or do we need to transfer the exceptions to the main process and then only the admin user can handle them?

    The same thing applies to subprocesses. A subprocess is just a process that has been invoked by another process and the same exception handling rules apply to it.
    You can catch exceptions in any process using:
    <li> logic at the activity level using a try/catch block
    <li> an activity using an Exception transition
    <li> a Group in the process using an Exception transition
    <li> the process using an Exception Handler
    At a minimum, catch the "Others" exception using the Exception Handler. This ensures uncaught exceptions are not sent to the End activity (the default) and the instances are not lost. This simple best practice will save you days of debugging and several calls to customer support to resolve.
    Dan

Maybe you are looking for