HOWTO: command_button, action and request parameters HOWTO

Starting from carDetail.jsp example:
Click of button:
<h:command_button
action="#{carstore.storeFrontLuxuryPressed}"
value="#{bundle.moreButton}" >
</h:command_button>
Method Invoked:
public String storeFrontLuxuryPressed() {
     setCurrentModelName("Luxury");
     return "carDetail";
Navigation case "carDetail" maps to:
<navigation-rule>
<from-view-id>/storeFront.jsp</from-view-id>
<navigation-case>
<description>
Any action that returns "carDetail" on storeFront.jsp should
cause navigation to carDetail.jsp
</description>
<from-outcome>carDetail</from-outcome>
<to-view-id>/carDetail.jsp</to-view-id>
</navigation-case>
</navigation-rule>
So I imagine that a forward is done to carDetail.jsp
At this point I want to daviate from the sample. I would like to pass request parameters to carDetail.jsp
like:
carDetail.jsp?mode=create&date=25-Dec-2003
I want my managed bean in carDetail.jsp to get populated from request scope. The managed bean in config looks something like this:
<managed-bean>
<description>this is for item test bean.</description>
<managed-bean-name>PageParams </managed-bean-name>
<managed-bean-class> com.a.PageParams</managed-bean-class>
<managed-bean-scope> request </managed-bean-scope>
<managed-property>
<property-name>mode</property-name>
<value>#{requestScope.mode}</value>
</managed-property>
<managed-property>
<property-name>date</property-name>
<value>#{requestScope.date}</value>
</managed-property>
</managed-bean>
How should I code the following method to pass the request parameters to the next page:
public String storeFrontLuxuryPressed() {
     setCurrentModelName("Luxury");
//Can I do anything here to help navigation system to pass additional request parameters to
//the carDetail.jsp page
     return "carDetail";
Please help as I have many pages that have command_button and control leads to other pages that take request parameters to initialize and set themselves up. And I can't understand how to make the two concepts work together?
Thanks,
Vinay

Thx hunangdp
your solution of using <f:parameter> is perfect #in case# <h:command_button> is not nested inside <h:data_table> , otherwise the request parameter passed will always show the value of the 1st row , not the clicked row .
consider the following :
<h:data_table var="item" value="#{shoppingCartBean.shoppingItems}" >
<h:column>
<h:command_link value="#{item.productId}" action="product" id="productAction">
<h:output_text value="#{item.productName}"/>
<f:parameter name="productId" value="#{item.productId}"/>
</h:command_link>
</h:column>
</h:data_table>
in this case using the following at the back end :
FacesContext fc = FacesContext.getCurrentInstance();
java.util.Map requestParameter = fc.getExternalContext().getRequestParameterMap();
String value = requestParameter.get("productId");
will return the value of the 1st row ..
so if, instead I consider adding an action listener which set the request attribute "productId" to the command_link value , this will work , but I have to get the value from request attribute not the request parameter ==> :
<h:data_table var="item" value="#{shoppingCartBean.shoppingItems}"
rowClasses="InnerTable">
<h:column>
<h:command_link value="#{item.productId}" action="product" id="productAction">
<h:output_text value="#{item.productName}"/>
<f:action_listener type="mybean.Listener"/-->
</h:command_link>
</h:column>
</h:data_table>
and mybean.listener ==> :
String id = (String) ((UICommand) event.getComponent()).getValue();
HttpServletRequest request = (HttpServletRequest)facesContext.getExternalContext().getRequest();
request.setAttribute("productId", id);
any comments.. ?

Similar Messages

  • JSR-168 and Request Parameters

    Hi!
    I'm creating a portlet application; right now it only has one portlet in it. The landing page for my portlet (view mode) has the following form code:
        <FORM action="<portlet:renderURL/>">
            I'm thinking of a number between 1 and 10.<BR><BR>
            <I>What is it?</I>
            <INPUT name="<portlet:namespace/>number" type="text" size="10" />
            <INPUT name="submit" type="submit" value="Guess!!" />
        </FORM>When I submit this form, I see the parameter in my browser's URL window prefixed with the portlet namespace:
       http://host:port/portal/page/portal/portalpage?__ns36_5643_36_1_1_number=3&submit=Guess%21%21Here is how I'm trying to get the "number" parameter in the Java class associated with this jsp:
                String number = (response.getNamespace()+"number");I have also tried with
                String number = response.getParameter("number");In both cases the variable number gets assigned the null value.
    How can I capture parameters sent by a form on a JSP page on the portlet's Java class?
    I am developing this portlet application with JDeveloper 10.1.3.3.0.4157 and deploying to Oracle Application Server 10.1.2.0.2 with a wsrp-compliant container. Portlet is consumed in Oracle Portal 10.1.4.
    Thank you for your response.

    I'm sorry; I typed it wrong:
    It's
    String number = request.getParameter("number");However, if you're referring to the namespace, then the way I have on my book (Portlet Programming, Effectively Using the JSR-168 Standard, by Cameron McKenzie) is really
    (response.getNamespace()+"number")

  • Redirect and request parameters

    I would like to add a new parameter to the request made by a call to response.senRedirect("newpage.jsp"), so that I can read its value when control has passed to "newpage.jsp". Any ideas? Thanks a lot.

    you could try response.sendRedirect("newpage.jsp?newparameter=newvalue")
    this may wipe out the values of any other parameters tou are trying to send though. You could also try request.setAttribute/request.getAttribute
    or
    <jsp:forward>
    <jsp:param>
    </jsp:forward>

  • Copying shared actions and objects with new parameters

    Hi All
    I have a problem with objects and shared actions. Here is the scenario:
    I have a sentence where parts of it are written in an informal way. The user is to tap the words of the sentence she/he thinks are informal, and they become highlighted. The user may click a submit button at any time, and if all the correct words have been highlighted, they receive a correct message.
    To achieve this I have given each word two click boxes (one for on and off), a highlight box, and have created shared actions for these to work.
    When I copy the group (the two click boxes and the highlight box), the actions are copied too. However, the shared actions parameters still point to the original, and not the copy. So my question is...
    Is there a way to copy objects and their associated shared actions, and have the parameters of the shared actions change to match the newly copied objects?
    Cheers
    Lewis Carey

    Hi Lewis,
    While Copy-Pasting can you make sure that you copy all the referred objects that are used as parameters.
    Also can you please upload your project file(cptx) to acrobat.com and email me the download link at [email protected]
    Regards,
    Haridoss

  • Actions and ActionListeners as parameters

    Hi everybody,
    I want to overload a method so it can take either 2 Actions, 2 ActionListeners, or one of each. The issue with this is that I'd have to make 4 overloaded signatures and almost identical methods, like this:
    method( action, action )
    method( action, listener )
    method( listener, action )
    method( listener, listener )It seems like doing it this way would result in a lot of extra code, and hence become a real pain in the neck. So, I was curious, has anyone else either tried to do this before, or do you have any ideas as to how I might be able to do this more efficiently? When I looked at the API it didn't look like Actions and ActionListeners share a root class I can use.
    Thanks,
    Jezzica85

    jezzica85 wrote:
    Hi everybody,
    I want to overload a method so it can take either 2 Actions, 2 ActionListeners, or one of each. The issue with this is that I'd have to make 4 overloaded signatures and almost identical methods, like this:
    method( action, action )
    method( action, listener )
    method( listener, action )
    method( listener, listener )
    Well, if you want to support that then you are just going to have to do suffer through it, the only shortcut I can recommend is that your method(action, listener) and method(listener, action) are the same so you only have to implement 1 and just use the other as a entry point to call the one you wish to contain the code.

  • Newbie: what is the equivalent of passing request parameters?

    Hi-
    I am new to JSF. I have read many tutorials and articles. I still don't get one concept about passing parameters. Note: I don't want to store stuff in the session unless I have to.
    Let's say I have a page with a list of users. I layout the page with a panelGrid. Each row of the table has the first and last name of the user. If a user clicks on the name of a user on the user list, it should go to the user profile page. The backing bean for the user list page will be the UserListBean. It has a method called getUsers() that returns a List of User objects.
    For the View User page, I have a ViewUserBean. The ViewUserBean retrieve the entire profile for that user.
    How do I pass the user ID to the ViewUserBean? In struts, I would pass it as a request parameter (I would manually write the link URL with the userID). I know I can use the request like that in JSF, but that seems ugly. I looked at the code of the J2EE bookstore tutorial and it does a funky thing with all sorts of data stored in the session.
    What is the best way to request a page and "pass in" a userID?
    Thanks for your help.
    Adam

    I have a case on my current project very similar to your case. What you want, very simply, is an easy way to allow faces to handle URLs like http://www.domain.com/showUserDetails?userId=50
    The natural trouble is that when loading the page, there is no action to use to prefetch the User object based on the Request Parameters in JSF.
    All the solutions above either rely on the session or they are exceedingly complex. This case is actually very easy to do and is very straight forward using Managed Properties and a Request Scope bean...
    Here is the rather straight forward solution I used...
    First, make a "ShowUserDetailsBean" which represents the "logic" for this page.
    public class ShowUserDetailsBean
        /** Will point to the actual user service after dependency injection*/
        private UserService userService;
        /** Will hold the userId from the HTTP Request Parameters*/
        private String userId;
        /** Will hold a lazy loaded copy of the User object matching userId*/
        private User user;
        public void setUserService(UserService userService) {
            this.userService = userService;  //dependecy injection
        public void setUserId(String userId) {
           this.userId = userId;  //dependency injection
        /** Lazy loads the User object matching the UserId */
        public User getUser() {
            //Trap the case where the URL has no userId
            if (userId == null) return null;
            if (user == null) {
                user = userService.getUser(userId);  //Lazy Load
            return user;
    }Next, configure the managed properties in faces-config.xml
    <faces-config xmlns="http://java.sun.com/JSF/Configuration">
      <managed-bean>
        <managed-bean-name>userService</managed-bean-name>
        <managed-bean-class>foo.UserServiceImpl</managed-bean-class>
        <managed-bean-scope>application</managed-bean-scope>
      </managed-bean>
      <managed-bean>
        <managed-bean-name>showUserDetails</managed-bean-name>
        <managed-bean-class>foo.ShowUserDetailsBean</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
        <managed-property>
          <property-name>userService</property-name>
          <property-class>foo.UserService</property-class>
          <value>#{userService}</value>
        </managed-property>
        <managed-property>
          <property-name>userId</property-name>
          <property-class>java.lang.String</property-class>
          <value>#{param.userId}</value>
        </managed-property>
      </managed-bean>Finally, you just make your webpage as you normally would...
    <h:outputText value="#{showUserDetails.user.userId}"/>
    <h:outputText value="#{showUserDetails.user.firstName}"/>
    <h:outputText value="#{showUserDetails.user.lastName}"/>
    Now you're ready to test, so you visit the page
    http://www.domain.com/showUserDetails?userId=50
    And your user details with userId=50 appears!
    It's just that simple!
    Regards,
    Doug
    Caveat: I haven't added any sample logic to handle cases where you visit:
    http://www.domain.com/showUserDetails
    without specifying a userId. I suggest you add some basic logic to your page to handle this case more gracefully.

  • WHY? Request Parameters From Form are NULL

    I have the following process, which by the way has been working successfully for months, until just recently.
    1) User comes to JSP page to upload images through a form that has the <input type="file"> fields as well as <input type="hidden"> to hold a few essential values.
    2) User submits form, form action attribute set to go to a Servlet
    3) Servlet reads all request params and inserts the images into a database.
    I have code to read in the images...I use classes from the org.apache.commons package.
    I could only assume it was the servlet that was the problem, but doubted that because why would it work all these months than suddenly stop.
    I set up a test html page with a form and had it go to a jsp page to read the request params and print them out. To my suprise they all had NULL values.
    Which tells me that the params aren't being read from the form.
    How could this be??
    Here is some example code snippets from my test pages:
    HTML PAGE
    <html><body>
    <form name="images" action="testing_operations.jsp" enctype="multipart/form-data" method="post">
    <input type="hidden" name="Customer_Number" value="4750">
    <table>
    <tr><td>
    <input type="file" name="image1" />
    </td></tr>
    <tr><td>
    <input type="file" name="image2" />
    </td></tr>
    <tr><td>
    <input type="submit" value="submit">
    </td></tr>
    </table>
    </form>
    </body>
    </html>JSP PAGE
    String cus = request.getParameter("Customer_Number");
    out.println("cus : " + cus +"<br>");
    String image = request.getParameter("image1");
    out.println("image: " + image); 
    I'm stumped...what am I doing wrong?
    I can't continue until I get this figured out, can anybody help me with this?
    Message was edited by:
    Love2Java

    I ran my original app with the enctype and without it:
    the tomcat dos-prompt that shows exceptions lists out this below...
    org.apache.commons.fileupload.FileUploadException: Processing of multipart/form-data request failed.
    C:\jakarta-tomcat\temp\upload_00000009.tmp (The system cannot find the path specified)
    at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:429)
    at org.apache.jsp.testing_operations_jsp._jspService(testing_operations_jsp.java:113)The code on line 113 in testing_operations.jsp is:
    List items = upload.parseRequest(request);
    and what is this .tmp file its trying to find?? I'm passing it an image off my local disk, not a .tmp file, there isn't even a temp folder in my jakarta-tomcat main folder....
    It is failing on this line because it isn't reading the request parameters sent in, thus why too when I test for the values of the params they return null.
    True, when I take out the enctype my test page will show the values, but this doesn't help me. I need that enctype attribute in there to process the images sent in through the fields.
    So where does this leave me??
    I went to the apache site for the commons upload and they have a more current version than what I'm using which is version 1.0, they have 1.1.1
    I downloaded the new version but had no success in using it, the compiler couldn't find a class I attempted to use.
    I still don't understand how this could be working and then suddenly stop.

  • Initialize managed bean from request parameters

    Hi:
    I thought this topic would be on the FAQ, but I couldn't find it. I am looking for a mean to initialize my managed bean from the query string. There must be something like:
    <h:form initializeBean=""true"" requestParameter=""id_author"" beanProperty=""#{author.id_author}"" action=""#{author.getFromDB}"" >
    </form>
    The url would be something like http://localhost:8080/protoJSF/showAuthor.jsf?id_author=5334
    And the getFromDB method would be something like
      Public void getFromDB()
         Statement stmt = cn.createStatement( ?SELECT * from author where id_author=? + getId_author() );
         ResultSet rs = stmt.executeQuery();
      }The only way I've found to perform something like this is to present a blank author form with a ''load data'' button: after pressing the button the user can see author's data and edit the data if she wants to. This two-step data screening is annoying, to say the least.
    There must be a better way.
    I beg for a pointer on how can I achieve the initializing of a managed bean with dynamic data.
    Regards
    Alberto Gaona

    You just have to read carefully the very fun 289 pages
    specification :-)Or, if 289 pages of JavaServer Faces is too much, you can get almost all of the same information from the JavaServer Pages 2.0 specification, or even the JSP Standard Tag Libraries specification :-).
    More seriously, the standard set of "magic" variable names that JavaServer Faces recognizes is the same as that reognized by the EL implementations in JSP and JSTL. Specifically:
    * applicationScope - Map of servlet context attributes
    * cooke - Map of cookies in this request
    * facesContext - The FacesContext instance for this request
    * header - Map of HTTP headers (max one value per header name)
    * headerValues - Map of HTTP headers (String array of values per header name)
    * initParam - Map of context initialization parameters for this webapp
    * param - Map of request parameters (max one value per parameter name)
    * paramMap - Map of request parameters (String array of values per parameter name)
    * requestScope - Map of request attributes for this request
    * sessionScope - Map of session attributes for this request
    * view - The UIViewRoot component at the base of the component tree for this view
    If you use a simple name other than the ones on this list, JavaServer Faces will search through request attributes, session attributes, and servlet context (application) attributes. If not found, it will then try to use the managed bean facility to create and configure an appropriate bean, and give it back to you.
    For extra fun, you can even create your own VariableResolver that can define additional "magic" variable names known to your application, and delegate to the standard VariableResolver for anything else.
    Craig McClanahan

  • Passing Request Parameters to Non JSF Page

    I want to pass request parameters from a JSF page (Page1.jsp) to a non JSF page (paramTest.jsp) and am having trouble.
    The parameters are 'null' in the non JSF page.
    Here is code (in Page1.java) that is called when 'button1' is clicked in Page1.jsp (modified from JSF, Bergsten p.167):
    public String button1_action() {
            FacesContext context = javax.faces.context.FacesContext.getCurrentInstance();
            ExternalContext ec = context.getExternalContext();
            try {
                ec.redirect("http://xxx/paramTest.jsp");
            } catch (Exception e) {
                // print exception information in the server log
                log("Exception occurred when redirecting page", e);
                error("Trouble redirecting page");
                return null;
            context.responseComplete();
            return "success";
        }Here is Page1.jsp code: <?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"/>
        <jsp:text><![CDATA[
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    ]]></jsp:text>
        <f:view>
            <html lang="en-US" xml:lang="en-US">
                <head>
                    <meta content="no-cache" http-equiv="Cache-Control"/>
                    <meta content="no-cache" http-equiv="Pragma"/>
                    <title>Page1 Title</title>
                    <link href="resources/stylesheet.css" rel="stylesheet" type="text/css"/>
                </head>
                <body style="-rave-layout: grid">
                    <h:form binding="#{Page1.form1}" id="form1">
                        <h:inputText binding="#{Page1.name}" id="name" style="left: 144px; top: 96px; position: absolute"/>
                        <h:outputLabel binding="#{Page1.componentLabel1}" for="componentLabel1" id="componentLabel1" style="left: 72px; top: 96px; position: absolute">
                            <h:outputText binding="#{Page1.componentLabel1Text}" id="componentLabel1Text" value="Name:"/>
                        </h:outputLabel>
                        <h:commandButton action="#{Page1.button1_action}" binding="#{Page1.button1}" id="button1" onclick="this.form.submit() style="left: 120px; top: 144px; position: absolute" value="Submit"/>
                        <h:messages binding="#{Page1.messageList1}" errorClass="errorMessage" fatalClass="fatalMessage" id="messageList1" infoClass="infoMessage"
                            showDetail="true" style="left: 480px; top: 72px; position: absolute" warnClass="warnMessage"/>
                    </h:form>
                </body>
            </html>
        </f:view>
    </jsp:root>Here is the rendered Page1.jsp html: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xml:lang="en-US" lang="en-US">
    <head>
    <meta http-equiv="Cache-Control" content="no-cache"/><meta http-equiv="Pragma" content="no-cache"/>
    <title>Page1 Title</title>
    <link type="text/css" rel="stylesheet" href="resources/stylesheet.css"/>
    </head>
    <body style="-rave-layout: grid">
    <form id="form1" method="post" action="/cenwkd/faces/Page1.jsp;jsessionid=79A5577F53DAAEDF164C5D33F33D8327" enctype="application/x-www-form-urlencoded">
    <input id="form1:name" type="text" name="form1:name" style="left: 120px; top: 96px; position: absolute" />
    <label id="form1:componentLabel1" for="form1:componentLabel1" style="left: 72px; top: 96px; position: absolute">
    <span id="form1:componentLabel1Text">Name:</span></label>
    <input id="form1:button1" type="submit" name="form1:button1" value="Submit" onclick="" style="left: 120px; top: 144px; position: absolute" />
    <input type="hidden" name="form1" value="form1" />
    </form>
    </body>
    </html> Here is the source for a test jsp, paramTest.jsp: <html>
    <head>
    <title>
    paramTest
    </title>
    </head>
    <body>
    <h2><%= request.getParameter("form1:name")%></h2>
    <%-- Also tried: request.getParameter("name"), "name" is the original 'id' value for the text field entered in Creator
         it apparently is changed to "form1:name" when the html is rendered--%>
    </body>
    </html>Here is the rendered html from paramTest.jsp: <html>
    <head>
    <title>
    paramTest
    </title>
    </head>
    <body>
    <h2>null</h2>
    </body>
    </html>Any help would be much appreciated.

    Hi,
    I dont see any parameters that you are trying to pass in the below code.
    public String button1_action() {
    FacesContext context = javax.faces.context.FacesContext.getCurrentInstance();
    ExternalContext ec = context.getExternalContext();
    try {
    ec.redirect("http://xxx/paramTest.jsp");
    } catch (Exception e) {
    // print exception information in the server log
    log("Exception occurred when redirecting page", e);
    error("Trouble redirecting page");
    return null;
    context.responseComplete();
    return "success";
    }

  • Automation plugin as action and via File/Automate

    Hi,
    I have an Automation plugin that is scriptable (it has a number of exposed scriptable parameters and can be recorded and run from Actions palette). The plugin displayes the UI when it is called interactively (from File/Automate).
    I am however having troubles distinguishing when it is called from an Action palette as a playback of recorded action and when it actually was called interactively from File/Automate (testing it in Photoshop CS6). On plugin invocation I check passed action descriptor and if not empty, read parameters from it and don't show the UI. On the call end, I write script parameters back to a descriptor to be able to use them in recorded action. With this in mind, after PS start first time selecting File/Automate works as expected - no descriptor/parameters passed into the plugin. But after a first call, Photoshop seems to keep the descriptor/parameters written at the end of the plugin and passes it on subsequent user invoked File/Automate. The same happens if plugin is getting called from a recorded action playback (and its expected). Basically after a first invocaction, the plugin will always receive action descriptor whether it called from an action playback or invoked by user.
    I need to distinguish these two cases and basically present UI/start from scratch when user invokes it and use the passed action parameters when action plays it. I have not found anything in SDK to point me to the solution so I'd appreciate the help.
    In filter plugins I can at least get selector start when invoked from UI and use that to free/ignore the action descriptor data.

    I don't think you should care. The option you do care about is this one:
    PIDialogPlayOptions playInfo
    That is part of  PIActionParameters *actionParameters
    That is part of your PSActionsPlugInMessage that comes into your automation plugin entrypoint.
    This parameter has three options:
    a) always display the dialog,
    b) only display the dialog if you don't like the parameters you are given,
    c) never display a dialog (either return an error or proceed with best options but don't stop with a dialog)
    From the file menu, user selected, you should get option a (always). From the actions panel you should get option a or b. From scripting you can get all three options.
    There is also a property in PIProperties.h called propPlayInProgress but the above information should be what you need to do the correct thing with dialogs.

  • Extracting Request Parameters from a POST.

    A client is POSTING some request parameters as part of its POST request.
    My servlet is getting this as part of the getInputStream.
    The contents of the inputStream received is:
    username=someUserName&password=somePassword
    Now how do I extract this username and password which is in the Body
    of the POST?
    I am trying request.getParameter("username")
    but am not getting the value of the username.
    Can some please help me as to how to get the request parameters?
    Attached is my servlet
    public class DeviceLocation extends HttpServlet {
    private static final String CONTENT_TYPE = "text/html";
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    doPost(request,response);
    public void doPost(HttpServletRequest request,
    HttpServletResponse response)
    throws ServletException, IOException {
    System.out.println("Servlet up and running...");
    InputStream requestInputStream = request.getInputStream();
    InputStreamReader isr = new InputStreamReader(requestInputStream);
    BufferedReader br = new BufferedReader(isr);
    String line = "";
    StringBuffer sb= new StringBuffer();
    while ((line = br.readLine()) != null)
    sb.append(line);
    br.close();
    System.out.println(sb.toString()); // display the input Stream
    // Display all the Request Parameters
    System.out.println("Request Method : " + request.getMethod());
    System.out.println("Host : " + request.getHeader("Host"));
    System.out.println("User Agent : " + request.getHeader("User-Agent"));
    } // End of servlet class.

    try doing it without reading in the requestInputStream first:
    public class DeviceLocation extends HttpServlet {
    private static final String CONTENT_TYPE = "text/html";
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    doPost(request,response);
    public void doPost(HttpServletRequest request,
    HttpServletResponse response)
    throws ServletException, IOException {
    System.out.println("Servlet up and running...");
    // Display all the Request Parameters
    System.out.println("username Parameter : " + request.getParameter("username"));
    System.out.println("Request Method : " + request.getMethod());
    System.out.println("Host : " + request.getHeader("Host"));
    System.out.println("User Agent : " + request.getHeader("User-Agent"));
    } // End of servlet class.

  • EJB 3.0 - problem reading request parameters

    I'm looking at Spring and TopLink integration and deploying with the EJB 3.0 version. I ran into problems when trying to retrieve a parameter from a request. Since I could not see anything wrong, I deployed with Tomcat and the code executed correctly.
    The simple case below illustrates the problem:
    <%@ page session="false"%>
    <%@ taglib uri="http://jakarta.apache.org/taglibs/request-1.0" prefix="req" %>
    <html>
    <head>
    <title>PetClinic :: a Spring Framework demonstration</title>
    </head>
    <body>
    The ID parameter is: <req:parameter name="id"/>
    </body>
    </html>
    Running with http://localhost:8080/sto12/welcomeURL.htm?id=foo causes foo to be displayed in Tomcat but not in OC4J EJB 3.0. Why is this?
    Thanks
    Mike

    Sorry, I tried to submit the problem in a simplified form and I can see I've just made it more confusing. Let me try again.
    Spring ships with a Petclinic sample. The Spring Toplink integration work has provided new classes that allow the Petclinic example to be deployed using Toplink as the object relational mapping. I have it running using Tomcat, but have had problems using OC4J EJB 3.0.
    In the sample app, there is a JSP that allows surname to be entered, which then calls code to search for Owners with a match on surname. That code treats no matches, one match and many matches differently.
    In the case of no matches, the JSP simply displays a message saying no matches found. In the case of many matches, it uses another JSP to display a list of Owners, from which the desired one is selected. The selected one is then displayed by a further JSP on which updates can be made. Where only one match with surname is found, the selection JSP is bypassed.
    Behind the scenes when obtaining the list of matching Owners, the Toplink code simply obtains a list. When one is selected, a further Toplink access is used which returns the selected Owner by reading via the primary key selected from the list. The essence of the problem is that there is a single piece of code in the sample that makes the Toplink call to read by primary key. When called in one scenario, it works, in the other it does not.
    Where that code is invoked as a result of the user selecting from a list, it is the JSP POSTing the selected Owner that transmits the primary key to the code. The code obtains the key from the request and everything works fine.
    Where only one Owner is found, a redirect is done with the key added as a parameter. When the same code as above attempts the retrieve the key, it is unable to do so ie it returns null and the subsequent Toplink call fails.
    Since the above obscures the problem, I played around with two of the JSPs provided - welcome.jsp and index.jsp. In the sample, index.jsp is included in the web.xml under <welcome-file-list> and hence is used when the app is started. It simply redirects to welcome.jsp. (I believe the reason is that all requests go via the Spring DispatcherServlet and are forwarded to the appropriate JSP depending on configuration - hence the comment that they are "virtual").
    When I put code in the index.jsp to display an id parameter and start it with an id provided, it displays the id parameter. When I let the index.jsp simply redirect to welcome.jsp (with an id included and welcome.jsp changed to display the value)it does not display the value.
    I'm sorry this has become a long post. The gist seems to be that I can't extract parameters from requests that have been redirected. As I said at the top of this note, this is not the case with Tomcat - I can run the same code there and retrieve parameters from a request, whether it has been redirected or not. I've posted in this forum because I believe the problem is with OC4J not with Spring or Toplink. I could be wrong.
    Any suggestions are very welcome.
    Mike

  • JSF Actions and ActionListeners with Tiles and forms

    I�m having a problem trying to use the Tiles functionality in Struts 1.1 with JSF and was wondering if anyone could help me.
    I have defined a very simple header, menu, content Tile that doesn�t involve nesting of tiles (ExampleTile_content1Level.jsp).
    I have 3 JSP pages, the first testHarness.jsp is NOT built using Tiles and is just used to load some test data into a session scoped bean using an actionListener and then forward to a Tile generated page (ExampleTile3.jsp) using a hard-coded action �applicationSummary� when a commandLink is pressed. This works fine for both the action and actionListener.
    ExampleTile3.jsp contains another commandLink that is meant to forward to another tile ExampleTile2.jsp. This also works until I try to add the <h:form> � </h:form> tag around the outside of the <h:panelGrid> tags in ExampleContent1.jsp when the action and actionListener then fail to fire and I get an �Error on Page� message in Explorer the detail of which says �Error �com_sun_rave_web_ui_appbase_renderer_CommandLinkRendererer� is null or not an object�.
    However I need a form so that I can bind UI controls to data from the bean stored in the session scope. This is only a problem when I use Tiles to define the pages. Does anyone know what I am doing wrong?
    Any help would be much appreciated.
    Tiles.xml
       <definition name="example3" path="/pages/exampleTile_content1Level.jsp" >
              <put name="headerClass" value="someStyle"/>
              <put name="menuClass" value="someStyle"/>
              <put name="contentClass" value="someStyle"/>
              <put name="header-title" value="/pages/exampleHeader.jsp" />
              <put name="menu" value="/pages/exampleMenu.jsp" />
              <put name="content" value="/pages/exampleContent1.jsp" />
       </definition>
       <definition name="example2" path="/pages/exampleTile_content1Level.jsp" >
              <put name="headerClass" value="someStyle"/>
              <put name="menuClass" value="someStyle"/>
              <put name="contentClass" value="someStyle"/>
              <put name="header" value="/pages/exampleHeader.jsp" />
              <put name="menu" value="/pages/exampleHeader.jsp" />
              <put name="content" value="/pages/exampleContent2.jsp" />
       </definition>ExampleTile3.jsp
    <f:view>
         <h:form>
              <tiles:insert definition="example3" flush="false" />
         </h:form>
    </f:view> ExampleTile2.jsp
    <f:view>
         <h:form>
              <tiles:insert definition="example2" flush="false" />
         </h:form>
    </f:view> Faces-config.xml
    <navigation-rule>
        <from-view-id>/pages/testHarness.jsp</from-view-id>
           <navigation-case>
                <from-outcome>applicationSummary</from-outcome>
                <to-view-id>/pages/exampleTile3.jsp</to-view-id>
              <redirect/>
           </navigation-case>
    </navigation-rule>
    <navigation-rule>
        <from-view-id>/pages/exampleTile3.jsp</from-view-id>
           <navigation-case>
                <from-outcome>nextPage</from-outcome>
                <to-view-id>/pages/exampleTile2.jsp</to-view-id>
                <redirect/>
           </navigation-case>
    </navigation-rule> ExampleTile_content1Level.jsp
    <tiles:importAttribute scope="request"/>
    <h:panelGrid columns="1" >
         <f:subview id="header-title">
              <tiles:insert name="header-title" flush="false" />
         </f:subview>
         <f:subview id="menu">
              <tiles:insert name="menu" flush="false" />
         </f:subview>
         <f:subview id="content">
              <tiles:insert name="content" flush="false" />
         </f:subview>
    </h:panelGrid> ExampleHeader.jsp / ExampleMenu.jsp
    <tiles:importAttribute scope="request"/>
    <h:panelGrid columns="1" columnClasses="someSyle">
         <h:outputFormat value="This is the {0}.">
              <f:param value="Header / Menu as appropriate "/>         
         </h:outputFormat>
    </h:panelGrid> ExampleContent1.jsp
    <tiles:importAttribute scope="request"/>
    <h:form>     <----- Fails with this tag included but works without it.
    <h:panelGrid columns="1" >
              <h:outputFormat value="This is the {0}.">
                   <f:param value="Content on the FIRST page"/>
              </h:outputFormat>
              <h:commandLink action="nextPage" immediate="false">
                   <h:outputText value="Click to go to next page"/>
              </h:commandLink>
    </h:panelGrid>
    </h:form> ExampleContent2.jsp
    <tiles:importAttribute scope="request"/>
    <h:panelGrid columns="1" >
         <h:outputFormat value="This is the {0}.">
              <f:param value="Content on the SECOND page"/>
         </h:outputFormat>
    </h:panelGrid>

    jezzica85 wrote:
    Hi everybody,
    I want to overload a method so it can take either 2 Actions, 2 ActionListeners, or one of each. The issue with this is that I'd have to make 4 overloaded signatures and almost identical methods, like this:
    method( action, action )
    method( action, listener )
    method( listener, action )
    method( listener, listener )
    Well, if you want to support that then you are just going to have to do suffer through it, the only shortcut I can recommend is that your method(action, listener) and method(listener, action) are the same so you only have to implement 1 and just use the other as a entry point to call the one you wish to contain the code.

  • Increase the SGA_MAX_SIZE and SGA_TARGET parameters

    HI ,
    I am using oracle 10g R2 and windows server 2003 .
    My server is having 8 GB RAM .
    I want to increase the SGA_MAX_SIZE and SGA_TARGET parameters .
    I am using the below command , but getting the error
    SQL> alter system set sga_max_size=2000M scope=spfile ;
    alter system set sga_max_size=2000M scope=spfile
    ERROR at line 1:
    ORA-32001: write to SPFILE requested but no SPFILE specified at startup
    Can someone please help ..

    hi
    connect as sys user and then try...
    first make folder as backup and then copy the old SPFILEorcl to the same folder(backup)
    now you can easily modify the files otherwise you will get error..
    you will find here..
    C:\ORACLE_HOME\database
    SQL>  alter system set sga_max_size=2000M scope=spfile ;
    System altered.OR.
    connect as sys user.
    and do the following...
    1).SQL>create pfile from spfile;
    2).modify the pfile and decrease\increase the size of pools.
    3).shutdown database.
    4). Startup database using created pfile.
    if it start ok then.
    5.) Recreate the Spfile with the created Pfile.
    SQL>create spfile from pfile;sarah

  • Auto Login With Request Parameters

    Hello
    I am working on a test JSF application in NetBeans 5.5 using the visual web pack. Currently there are only two pages in the app, a login page and a main page.
    I am trying to figure out how I could set up an auto login to a JSF based web app. I would like the app to be able to take username and password parameters on the URL and automatically attempt to log into the app with those values. When the URL contains these parameters and they're valid, instead of displaying the login page, it would start up with the main page displayed. If the paramters were not present or invalid, the login page would be displayed.
    I've read about how to pull request parameter values into from a JSP page, but I don't think that would helpful for this case. I have instances of ApplicationBean, SessionBean and RequestBean in the project. I'm wondering if any of these would be the appropriate place to add some code to check for the parameters, attempt to login and display the correct page based on the login result.
    And advice greatly appreciated.
    Shelli

    I'll be so kind to share a basic example I've been playing with a while ago :)
    public class UserFilter implements javax.servlet.Filter {
        @SuppressWarnings("unused")
        private FilterConfig filterConfig;
        public void init(FilterConfig filterConfig) {
            this.filterConfig = filterConfig;
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException
            // Check PathInfo.
            HttpServletRequest httpRequest = (HttpServletRequest) request;
            String pathInfo = StringX.trim(httpRequest.getRequestURI(), httpRequest.getContextPath());
            if (pathInfo.indexOf(PATH_INC + "/") == 0 || pathInfo.indexOf(MAIN_JSF) == 0) {
                // If include files are loaded (subviews, images, css, js) or if unfriendly URL is
                // requested somehow, then continue the chain and abort this filter. In case of
                // unfriendly URL's, the next filter in the chain is the FriendlyUrlFilter which
                // translates the URL and will redirect back to this filter.
                chain.doFilter(request, response);
                return;
            // Get UserSession from HttpSession.
            HttpSession session = httpRequest.getSession();
            UserSession userSession = (UserSession) session.getAttribute(SESSION_ID);
            if (userSession == null) {
                // No UserSession found in HttpSession; lookup SessionId in cookie.
                String sessionId = Context.getCookieValue(httpRequest, COOKIE_ID);
                if (sessionId != null) {
                    // SessionId found in cookie; lookup UserSession by SessionId in database.
                    userSession = new UserSession();
                    userSession.setSessionId(sessionId);
                    LoadQuery<UserSession> loadQuery = new LoadQuery<UserSession>(userSession);
                    try {
                        Dao.execute(loadQuery);
                        userSession = loadQuery.getOne(); // This can be null.
                        // If this is null, then session is just deleted from DB or the cookie is fake.
                        Logger.info("Loading usersession succeed: " + userSession);
                    } catch (DaoException e) {
                        Logger.error("Loading usersession failed.", e);
                if (userSession == null) { // loadQuery.getOne() can return null.
                    // No SessionId found in cookie, or no UserSession found in DB; create new UserSession.
                    sessionId = StringX.getUniqueID();
                    userSession = new UserSession(sessionId);
                    try {
                        Dao.execute(new SaveQuery<UserSession>(userSession));
                        Logger.info("Creating usersession succeed:" + userSession);
                    } catch (DaoException e) {
                        Logger.error("Creating usersession failed.", e);
                    // Put SessionId in cookie.
                    HttpServletResponse httpResponse = (HttpServletResponse) response;
                    Context.setCookieValue(httpResponse, COOKIE_ID, sessionId);
                // Set UserSession in current HttpSession.
                session.setAttribute(SESSION_ID, userSession);
            // Add hit and update UserSession.
            userSession.addHit();
            try {
                Dao.execute(new SaveQuery<UserSession>(userSession));
                Logger.info("Updating usersession succeed:" + userSession);
            } catch (DaoException e) {
                Logger.error("Updating usersession failed.", e);
            // Continue filtering.
            chain.doFilter(request, response);
        public void destroy() {
            this.filterConfig = null;
    }By the way, the 'User' DTO is wrapped in the UserSession which can be retrieved in the backing bean by:
    public User getUser() {
        return ((UserSession) Context.getSessionAttribute(SESSION_ID)).getUser();
    }If the User is not logged in, then this is null. If the user is logged in, then put the User in the UserSession object.

Maybe you are looking for