H:commandLink

Hi everybody,
i m a jsf newbie, i've added to my page a new header menu wich contain links to other pages using <h:commandLink> tag, i wonna that when the user clic on the link this last one will be underlined, i don't know how to do that,
any Help plz
Thx
A.Younss

There is nothing in standard JSF that will automate this. Perhaps some of the breadcrumb components that some libraries provide might.
I would use CSS to provide the underline and a backing bean that remembers the last page to provide the style. It is a little tricky since you can't pass parameters with EL, but you could use a (?:) expression, e.g.
<h:commandLink styleClass="#{'page1.jsp' eq myBean.lastPage ? 'lastVisited' : 'regularLink' }"
    value="page1.jsp" />(Note: untested and uncompiled.)

Similar Messages

  • Problem passing parameters to commandLink in a column

    Hi.
    I'm using JDeveloper 11.1.1.7.0
    I'm having this problem and I can't understand what I'm doing wrong.
    I have a table like this:
    <af:table value="#{bindings.myView.collectionModel}"
                var="row"
                rows="#{bindings.myView.rangeSize}"
                emptyText="#{bindings.myView.viewable ? 'No data to display.' : 'Access Denied.'}"
                fetchSize="#{bindings.myView.rangeSize}"
                rowBandingInterval="0"
                binding="#{backingBeanScope.myBean.t1}"
                id="t1"
                rowSelection="single"
                contentDelivery="immediate">
        <af:column sortProperty="#{bindings.myView.hints.PrId.name}"
                   sortable="false"
                   headerText="Nro. Proc."
                   id="c2" width="50">
          <af:outputText value="#{row.PrId}" id="ot5"/>
        </af:column>
        <af:column id="c8" headerText="Check" align="center" width="70">
          <af:commandLink text="rowCheck" id="cl1" partialSubmit="true">
            <f:attribute name="rowKey" value="#{row.rowKey}"/>
            <af:serverListener type="serverAction" method="#{backingBeanScope.myBean.linkEvaluacionServerAction}"/>
            <af:clientListener type="action" method="clientAction"/>
          </af:commandLink>
        </af:column>
    </af:table>
    After lot of tests, serverListener + clientListener is the only way to run some code after clicking the link. I don't know why, but actionListener in the link only works the first time. The second time and so on, actionListener did not fire.
    My problem is how to pass rowKey parameter to linkEvaluacionServerAction method:
      public void linkEvaluacionServerAction(ClientEvent ce){
        Object key1 = ce.getComponent().getAttributes().get("rowKey");
         // actions with key1
    I don't know why, but rowKey link attribute only takes its related value the first time I clicked on a link.
    From the second and so on, key1 values null
    How can I solve this? Any help is very appreciated.
    Regards

    Well, I rethink (again) the approach and solve it in  this way:
    <af:column id="c9" headerText="Evaluación">
                      <af:commandLink text="Evaluar Procedimiento" id="cl3"
                                      partialSubmit="true"
                                      actionListener="#{bindings.setCurrentRowWithKey.execute}"
                                      action="#{backingBeanScope.myBean.linkEvaluacionAction}"/>
                    </af:column>
    Parameter for setCurrentRowWithKey is #{row.rowKeyStr}
    In my method linkEvaluacionAction I do some additional checks.
    Hope this helps. Regards

  • Using commandLinks and commandButtons in dataTables

    I'm trying to create a page that displays data from a database and allows you to edit individual rows by clicking on either a commandButton or a commandLink within a dataTable that then takes you to another page where you can edit that particular row of the table.
    When using a commandButton, it works perfectly for all but the last entry in the table. But when the button in the last line is clicked, nothing happens at all, it does not seem to call the action listener and it does not perform the navigation based on the action. But with all the previous buttons it calls the actionListener and navigates perfectly. Can anyone tell me why this would be? The code is as follows:
    <h:dataTable value="#{Categories.categories}" var="category" >
    <h:column>
    <f:facet name="header"><h:outputText value="#{msgs.deptColumnHead}"/></f:facet>
    <h:outputText value="#{category.departmentName}"/>
    </h:column>
    <h:column>
    <f:facet name="header"><h:outputText value="#{msgs.categoriesColumnHead}"/></f:facet>
    <h:outputText value="#{category.categoriesList}"/>
    </h:column>
    <h:column>
    <h:form>
    <h:inputHidden id="dept" value="#{category.departmentId}"/>
    <h:commandButton id="editButton" action="EditCat" actionListener="#{Categories.editListener}" value="{msgs.editSelectedButtonText}"/>
    </h:form>
    </h:column>
    </h:dataTable>
    When using commandLinks, only the first one works (of 4). For the other 3 the page goes into error when the link is clicked and it complains that 'document.forms._id2:3:_id10._id2:3:_id10:idcl is null or not an object'. If anyone could tell me what is wrong with my code, i would be most appreciative.
    <h:dataTable value="#{Categories.categories}" var="category" >
    <h:column>
    <f:facet name="header"><h:outputText value="#{msgs.deptColumnHead}"/></f:facet>
    <h:outputText value="#{category.departmentName}"/>
    </h:column>
    <h:column>
    <f:facet name="header"><h:outputText value="#{msgs.categoriesColumnHead}"/></f:facet>
    <h:outputText value="#{category.categoriesList}"/>
    </h:column>
    <h:column>
    <h:form>
    <h:inputHidden id="dept" value="#{category.departmentId}"/>
    <h:commandLink action="EditCat" actionListener="#{Categories.editListener}">
    <h:outputText value="#{msgs.editSelectedButtonText}"/>
    </h:commandLink>
    </h:form>
    </h:column>
    </h:dataTable>

    1) I have had very odd behavior in JSF when ALL of the
    JSF elements on a page do not have an id attribute. If
    you do not assign an id then JSF will manufacture a
    unique id on the flag. Sometimes the unique id wasn't
    so unique and there were errors like you are seeing or
    just odd behavior on the form, buttons not generating
    events, or incorrect rendering, etc.
    By 'ALL' I mean output text, columns, anything that
    accepts an id attribute. Don't trust the code to
    generate an id correctly for you.Just want it known that while this may be necessary in the short-term to work around bugs, this is definitely not the intent of the EG! We don't want people getting in the habit of
    Also note that this behavior is not consistent
    sometimes it would not appear on a page unless the
    page was updated and more controls added to it.Ah, well that is a known issue; while developing a page, the Sun RI can have problems if you change a page's contents between two submissions. (It doesn't pick up that the .jsp has changed.) I'd recommend:
    - Use client-side state saving.
    - Make sure you're making a new request for a page (not re-POST-ing anything!) when the page's contents have changed.
    If you follow both of those rules, then you should generally be able to get away without explicit IDs everywhere as you actively develop your page.
    Explicit IDs are required if you're inside <c:if>; this is known and documented.
    2) try putting the hidden input control in it's own
    columnNo, that'll give you a bonus set of <td> elements, which isn't what you want.
    -- Adam Winer (EG member)

  • CommandLinks and CommandButtons in Datatable do not work

    I have read the threads about this issue and am aware of the fact that there is a problem, if the backing bean is in request scope. However, my backing bean is in session scope and it still does not work - my action methods are never called. What's more, I have another backing bean in session scope, where it works perfectly and I cannot see any difference between them.
    Here's the code, my backing bean is dms:
    <h:form rendered="#{dms.documents.rowCount > 0}">
    <h:dataTable rowClasses="..." headerClass="..." value="#{dms.documents}"
    columnClasses="..." var="item" border="1" cellpadding="2" cellspacing="0">
    <h:column>
    <f:facet name="header">
    <h:outputText>DocName</h:outputText>
    </f:facet>
    <h:commandLink action="#{dms.test}" value="#{item.docName}"/>
    </h:column>
    <h:column>
    <f:facet name="header"/>
    <h:commandButton id="foo" value="View" action="#{dms.test}"/>
    </h:column>
    </h:dataTable>
    <h:commandLink action="#{dms.test}" value="Clickme"/>
    </h:form>
    Here is the code in the backing bean:
    public String test() {
    System.out.println("Hooray");
    return "mainPage";
    And this in faces-config.xml:
    <managed-bean>
    <managed-bean-name>dms</managed-bean-name>
    <managed-bean-class>com.mypackage.DmsController</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    Only the last link, the one outside the datatable and titled "Clickme", works. I can see "Hooray" in the logfile and am redirected to the main page. If I click any of the links or buttons in the datatable, nothing is written to the log and the same page is loaded again, but only the static content is displayed, i.e. no JSF tags are evaluated, they are just dropped. There are, however, a few hidden input fields called javax.faces.ViewState, which I don't know where they are coming from.
    As I said, I have another backing bean in session scope, which is modelled exactly like that and it works there. Maybe JSF apps are supposed to have only one controller?
    Many thanks in advance for any pointers,
    Ulrich
    Edit: It doesn't change anything if I put the backing bean in application scope. I did have the same problem before with my other backing bean, but could solve it there by putting it from request scope to session scope.

    <h:dataTable value="#{dms.documents}">How do you load this list? This list should not be null during the INVOKE_APPLICATION phase.
    Try stubbing the List right in the getDocuments() method and see if it works.

  • Problem with commandLink and commandButton

    Problem with commandLink and commandButton
    I have commandButton id="submit" action="{myActionClass.dothis}"
    When I click on the commandbutton it is not submiting to the action class rather, its submitting to the same page..
    I am tired of this ...
    I am using tiles for displaying jsf pages . Any problem because of using tiles

    yes I have the validator.
    If I open the url directly its working fine
    let say I am opening localhost:8080/test/test.jsf
    then it works fine
    If i use the same test.jsf along with tiles and open it, then its dispalying all the elements but when i click on commandbutton.. nothin is happening.
    the seems like page is reloaded.

  • How do I open a page in new window using af:commandLink?

    Hi,
    I have a requirement where I need to open the page in a new window on clicking the af:commandLink.
    I could use af:goLink, but I cannot as I have to invoke the URL using http POST method. If I use af:goLink, all the parameters will be displayed in the URL. I do not want that.
    I have the below code for the commandLink:
    <af:commandLink text="Open new window" id="cl199bk"
    styleClass="AFRighColLinkText"
    action="dialog:openNewWindow"
    useWindow="true" windowHeight="400"
    windowWidth="800" immediate="true"/>
    When I click the commandLink, the page gets opened but in the same window. I have the below controlflow-case in my taskflow:
    <control-flow-case id="__71">
    <from-outcome id="__133">dialog:openNewWindow</from-outcome>
    <to-activity-id id="__72">openNewWindow</to-activity-id>
    </control-flow-case>
    Please let me know what to do to have the page opened in new window/tab.
    Thanks in advance!

    Hi Frank,
    I tried that too and the page always opened in the same page even with dialog:action set and useWindow set to true. I had the navigation rule in adfc-config as well.
    I got it done using the url-view activity.
    I have created a new bounded task flow with the url-view activity as the default activity. I called this new task flow from the actionListener bean method on commandLink. Set the new task flow to url-invoke-allowed.
    I have my parameters set in the url-view activity. With this the parameters are not shown in the URL.
    That did the trick for me.
    Thanks.

  • Open that jspx page in new window using commandLink

    Hi All,
    I'm working on adf application.I'm using jdeveloper 11.1.1.5 version.I want to get the attribute value of current row and pass it to jspx page.And i want to open that jspx page in new window.I tried like following:
    <af:column id="resId1c7" align="center" width="50">
    <af:commandLink actionListener="#{bindings.setCurrentRowWithKeyValue.execute}"
    text="MSG-ID"
    disabled="#{!bindings.setCurrentRowWithKeyValue.enabled}"
    id="cl1"
    action="dialog:Confirm" windowHeight="600"
    windowWidth="800" useWindow="true"
    partialSubmit="true"/>
    </af:column>
    And in my faces-config.xml i add the navigation rule like this.
    <navigation-rule>
    <navigation-case>
    <from-outcome>dialog:Confirm</from-outcome>
    <to-view-id>/AuditLogInfo.jspx</to-view-id>
    </navigation-case>
    </navigation-rule>
    Here my problem is i want to get the result jspx page in new window.But im not able to do it.Please help me how can i do this?
    Thanks in advance!

    Thq very much.It is working fine.
    I added the command link in my home page.When i'm clicking on that link im able to get my child.jspx page in new window.But I have added the login page to my adf application.If i run the login page im able to get my home page.But now i'm not able to get my child.jspx page when i'm clicking on command link.How can i resolve this.Please give me your suggestions.
    Thnks in advance.

  • How to disable or change the value of h:commandlink jsf component

    Hi,
    I am a student. I am using h:commandlink. I need to change the value of the component once it is clicked by the user. How do i do that?
    If i cannot change the displayed value of the commandlink. I am thinking of atleast disabling the link once the user clicked., to avoid the link being clicked more than once by the user.
    <h:commandlink id = "follow" action = "usermanager.followdoctor" value = "Follow"/>
    Usermanager is my managed bean class for this jsp page. The value "Follow" is the one that i want to be changed to "following" once it is clicked. Please help me. Thanks for your time in advance.

    Hello qimbal2,
    Thanks for getting back to me. you are right , i should disable the link as soon as it is clicked. I went ahead and implemented this logic by using a property in my bean class and binding that property to the value of my link. I wrote the logic in my action method in such a way that when i click on follow for the first time, the value of the link would change to 'Following' and the link would be disabled. It works for me now.
    Thanks,
    Suha

  • How can i call a bean methos using h:commandlink or h:commandButton?

    Hi
    i want to call a methos in the bean class throught h:commandbutton action
    my code is
    <h:commandLink action="#{sample.tryStuff1}" immediate="true" rendered="true">
    <h:outputText value="add" />
    </h:commandLink>
    <h:commandButton id="ad"
    action="#{sample.tryStuff1}"
    immediate="true"
    value="add"
    type="SUBMIT"/>
    what does immediat do here
    i am trying both ways but its not calling the methosd.
    what am i doing wrong?
    my config file
    <managed-bean>
    <description>sample</description>
    <managed-bean-name>sample</managed-bean-name>
    <managed-bean-class>com.actsys.web.sample</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    please help
    thansk in advance

    have you tried the following?
    <h:commandLink value="add" action="#{sample.tryStuff1}"  />Also, it might be good to know if you are actually getting to the action method tryStruff1, what does sys.out show if you have it in the first line of the action method?
    If you are getting to the action method, then there is probably an issue with your navigation handler.

  • How to get af:commandLink components of a page in its showPrintablePage

    I have a table which has af:commandLink component in one of its column.
    Other columns have af:outputText components which are visible in show printable page of the table..But the column which has af:commandLink component in it shows blank.Is there any way to get the af:commandLink in show printable page.
    (Its ok if I dont have the links functioning in the Printable page.. I just need to show the links so that they are also printed...)

    Hi,
    from looking at the sources, it hides the command component that performs the print. However, there is a mentioning that all command components are suppressed, which is not configurable. Here's what the component doc says:
    "The showPrintablePageBehavior tag is a declarative way show a printable page. It may be added underneath any "command" component - commandButton, commandLink, commandMenuItem, commandToolbarButton, etc. When that button is clicked, a new browser window will be displayed (or, potentially, a new tab, depending on the browser) that has the printabel look-and-feel. Printable pages lack all navigational components, and generally eliminate scrolling so that all contents can be printed. Note that the command component will not submit an action event to the server (the event is cancelled), though there will be a request to the server to get the printable page."
    Frank

  • Passing object as parameter in JSF using h:commandLink tag

    Hi ,
    I have a scenario in which i need to pass objects from one jsp to another using h:commandLink. i read balusC article "Communication in JSF" and found a basic idea of achieving it. Thanks to BalusC for the wonderful article. But i am not fully clear on the concepts and the code is giving some error. The code i have is
    My JSP:
    This commandlink is inside a <h:column> tag of <h:dataTable>
    <h:commandLink id="ol3"action="ManageAccount" actionListener="#{admincontroller.action}" >
                   <f:param id="ag" name="account" value="#{admincontroller.account}" />
                   <h:outputText id="ot3" value="Manage Account" rendered="#{adminbean.productList!=null}" />
                   </h:commandLink>
    Also a binding in h:dataTable tag with the  binding="#{admincontroller.dataTable}"
                      My Backing Bean:
    public class CompanyAdminController {
              private HtmlDataTable dataTable;
              private Account account=new Account();
    public HtmlDataTable getDataTable() {
            return dataTable;
    public Account getAccount() {
             return this.account;
    public void setAccount(Account account) {
              this.account = account;
          public void action(){
                account= (Account)this.getDataTable().getRowData();
           } faces-config.xml
    <navigation-rule>
        <from-view-id>/compadmin.jsp</from-view-id>
        <navigation-case>
          <from-outcome>ManageAccount</from-outcome>
          <to-view-id>/manageAccount.jsp</to-view-id>
        </navigation-case>
      </navigation-rule>
    <managed-bean>
              <managed-bean-name>admincontroller</managed-bean-name>
              <managed-bean-class>com.forrester.AdminController</managed-bean-class>
              <managed-bean-scope>request</managed-bean-scope>
              <managed-property>
                   <property-name>account</property-name>
                   <property-class>com.model.Account</property-class>
                   <value>#{param.account}</value>
             </managed-property>
         </managed-bean>My account object:
    public class Account {
    string name;
      public String getName()
        return this.name;
      public void setName(String name)
           this.name=name;
      }I need to display #{admincontroller.account.name} in my forwarded jsp. But I am not sure whether the code i wrote in commandlink is correct. I get an error if i use <f:setActionListener> . No tag "setPropertyActionListener" defined in tag library imported with prefix "f"
    Please advise.
    Edited by: twisai on Oct 18, 2009 11:46 AM
    Edited by: twisai on Oct 18, 2009 11:47 AM
    Edited by: twisai on Oct 18, 2009 11:48 AM

    Yes.. iam removed the managedproperty from faces-config. But still i get the null pointer exception on main jsp itself and i am taken to second jsp manageaccount.jsp. Did you find anything wrong in my navigation case in the action method??
                                     public String loadAccount(){
               Account account = (Account)this.getDataTable().getRowData();
                return "ManageAcct";And also can you please answer this question i have
    The AdminController is the backing bean of 1st JSP and manageAccontController is the backing bean of forwarded JSP .
    Can i put this action method and dataTable binding in a 2nd manageAccontController backing bean instead of AdminController. But if i do that way dataList binding in h:dataTable tag will be in first JSP backing bean and dataTable binding to 2nd JSP. Not sure how to deal with this.
    {                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • H:commandLink does not work on Safari

    Hi,
    I'm using JBoss AS 4.2.2.GA with Seam 2.0.1.GA and all its standard libs. But this seems to be a JSF-RI issue which is used by JBoss 4.2.2.GA
    It seems as if <h:commandLink> don't work on Safari 3/Mac OS Leopard, which they did in earlier prjects with jboss 4.0.5.GA and Seam 1.2.1.GA. In this version myfaces was used.
    The commandLink in the following example produces a JavaScript error "Undefined value". It doesn't matter if the action or the form is empty. I've simplified the example but this also happens with a "complete" form.
    The starange thing is that if I copy the generated HTML source into an html file, open that file and click the "command" link, it works (however an error page is shown since this is not a legal Seam request).
    I've no idea why this browser makes a difference between these two files since I have used <h:commandLink> in many earlier projects with earlier versions of the components. Firefox works without a problem.
    I've already changed the extension of JSF/Seam from .seam to .html. Same error.
    Anyone can help here?
    Alex
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
                          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:f="http://java.sun.com/jsf/core">
    <head>   
    </head>
    <body>
    <f:view>
         <h:form id="aForm">
              <h:commandLink id="theId" >abc</h:commandLink>
         </h:form>
    </f:view>
    </body>
    </html>This is the generated HTML. The JavaScript error points to the line with the link.
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>   
    </head>
    <body>
    <form id="aForm" name="aForm" method="post" action="/leadspot/test.seam" enctype="application/x-www-form-urlencoded">
    <input type="hidden" name="aForm" value="aForm" />
    <script type="text/javascript" language="Javascript">
    //<![CDATA[
    function dpf(f) {var adp = f.adp;if (adp != null) {for (var i = 0;i < adp.length;i++) {f.removeChild(adp
    );}}};function apf(f, pvp) {var adp = new Array();f.adp = adp;var ps = pvp.split(',');for (var i = 0
    ,ii = 0;i < ps.length;i++,ii++) {var p = document.createElement("input");p.type = "hidden";p.name = ps
    ;p.value = ps[i + 1];f.appendChild(p);adp[ii] = p;i += 1;}};function jsfcljs(f, pvp, t) {apf(f, pvp)
    ;var ft = f.target;if (t) {f.target = t;}f.submit();f.target = ft;dpf(f);};
    //]]>
    </script>
    <a id="aForm:theId" href="#" onclick="if(typeof jsfcljs == 'function'){jsfcljs(document.forms['aForm'],'aForm:theId,aForm:theId','');}retu
    rn false">abc</a><input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="_id7" />
    </form>
    </body>
    </html>

    alxsde wrote:
    What I still don't understand is why the same HTML code works when loaded from a file and is not generated by JSF.Hi. I committed the fix. For what it's worth, I hand-coded the JS in a static file for testing and was able to reproduce the problem and test the fix there before altering the Mojarra code. Why are you seeing different behavior? * shrug * :P
    Glad it got you going though. :)

  • How to get another jsp by clicking a h:commandLink in jsf page

    Hi,
    I am new to JSF. pls send sample code me how to get another jsp by clicking a commandLink in jsf.
    SUB: TO go to the page "report7.jsp"
    -->By getting help from samples i wrote for above in 2 ways.
    1)
    <td><h:commandLink id="RO0007" action="r7" >Sharing of Information from Foreign FIU</h:commandLink></td>
    and in <reports-config>
    <navigation-case>
    <from-outcome>r7</from-outcome>
    <to-view-id>report7.jsp</to-view-id>
    </navigation-case>
    2) Sending request through bean method
    <td><h:commandLink id="RO0007" action="#{RBean.report7()}" >Sharing of Information from Foreign FIU</h:commandLink></td>
    in RBean the method form is
    public String report7(){          
         return "r7";
    and in <reports-config>
    <navigation-case>
    <from-outcome>r7</from-outcome>
    <to-view-id>report7.jsp</to-view-id>
    </navigation-case>
    Some problem in both i think as it is not going to next page. i need to go to th next page by calling Bean Method.
    please get me out of this problem. It is very urgent. Thank you.
    **************************************************************

    What error is it throwing? If it is throwing a Page not found, then maybe you should try mapping to "report7.faces" instead of "report7.jsp"
    Can you post your faces-config please

  • One reason why commandLink doesn't work in dataTable

    Ok, so I think I've got an explanation why commandLink doesn't work in dataTable when the model bean is request scoped. Maybe somebody can tell me if I'm wrong.
    I have a model bean that generates table rows based on some input criteria (request parameters).
    So, we validate the inputs, apply them to the bean and render the page. Once the inputs have been applied to the bean, a request for table rows returns rows, no problem.
    However, we put a commandLink in each row, so we can expand the details. Maybe we even get smart and repeat the input row-generating criteria as a hidden field in the page.
    Unfortunately, when the user hits the commandLink, the list page simply refreshes, maybe even w/out table rows. The user doesn't get the details page as expected.
    Why not?
    Because: in the DECODE phase (even before validation and before "immediate" values have had their valueChangeListeners called), we ask the model bean for the table rows, so we can decode the commandLinks. Unfortunately, in "decode" phase, the request-scoped model bean has not had its row-generating criteria updated (that happens in the "update model" normally, or at the END of the decode phase if we got cute by (1) setting the "immediate" attribute on the row-generating criteria to "true" AND (2) set a valueChangeListener to allow us to update the model bean early. The END of the decode phase isn't good enough -- in the middle of that phase, when we're attempting to deocde commandLinks, the model bean has no citeria, so there's no row data. No row data means no iteration over commandLinks to decode them and queue ActionEvents. So, we march through the rest of the phases, process no events, and return to the screen of origin (the list screen) with no errors.
    So, what's the solution?
    One solution is to make the model bean session-scoped. Fine, maybe we can store a tiny bit of data in it (the search criteria), so it's not such a memory drag to have it live in the session forever. How do we get that data in? A managed property in faces-config.xml with value #{param.PARENT_KEY} won't work because it's assigning request-scoped data to a session-scoped holder. JBoss balks, and rightly so. Do we write code in the model bean that pulls the request parameter out of thin air? (FacesContext.getExternalContext()....) I don't really like to code the name of a specific http request parameter into the bean, I think it's the job of the JSP or faces-config.xml to achieve that binding (request parameter to model propery). Plus, I'd be sad to introduce a dependency on Faces in what was previously just a bean.
    Is there a better way?
    In my particular situation, we're grafting some Faces pages onto an already-existing non-Faces application. I don't get the luxury of presenting the user an input field and binding it to a bean. All I've got to work with is a request parameter.
    Hmm, I guess I just answered my own question. if all I've got to work with is a request parameter, some ugliness is inevitable, I guess.
    I guess the best fix is to cheat and have the bean constructor look for a request parameter. If it finds it, it initializes the criteria field (which, in my case, is the key of an object that has a bunch of associated objects (the rows data), but could be more-general d/b search criteria).
    (I looked at the "repeater" example code in the RI, but it basically statically-generates its data and then uses 100% Faces (of course) to manage the paging (where "page number" is essentially the "criteria").
    Comments? Did I miss something obvious?
    John.

    ...or I could just break down and do the thing I was hoping to avoid (outputLink instead of commandLink):
    <h:outputLink value="/faces/Detail.jsp">
      <f:param name="PARENT_KEY" value="#{bean.parentKey}"/>
      <h:outputText value="#{bean.label}"/>
    </h:outputLink>It's still a "hardcoded" parameter name, but at least the binding is in the JSP and faces-config.xml, not the bean Java code.

  • CommandButton and commandLink behaving differently for file download

    Hello there,
    Hopefully someone can help - I have looked through the existing queries and can't just find what I'm after.
    I have a main record with asociated files - the files are uploaded through my web app and are downloaded from the same page that lists the files in a dataTable. I have a series of commandLinks that display the file names - a user selects the file and it downloads.
    The problem I have is that when a user downloads a file then immediately trys to upload another, they are prompted to download the file that they have already previously downloaded. If however I replace the commandLinks for commandButtons the application behaves correctly.
    I have seen an associated link that mentions similar behaviour (http://blogs.sun.com/tor/entry/creating_downloadable_files), however I do not want to use the command buttons in this manner, and I use an actionListener rather than an action so I may retrieve information from the list of dynamically created files. I am not receiving any errors, just the strange behaviour with commandLinks.
    My code is as follows:
    public void downloadFile(ActionEvent ev) {
    UIData fileList = findParentHtmlDataTable(ev.getComponent());
    AssociatedFile associatedFile = (AssociatedFile) fileList.getRowData();
    String downloadPath = "download path retrieved here...";
    try {
    byte[] fileData = InternalUtil.readFile(downloadPath);
    HttpServletResponse response =
    (HttpServletResponse) getFacesContext().getExternalContext().getResponse();
    response.setHeader("Content-disposition", "attachment; filename=\"" +
    associatedFile.getName() +
    response.setContentLength(fileData.length);
    response.setContentType(associatedFile.getContentType());
    ServletOutputStream out = response.getOutputStream();
    out.write(fileData);
    getFacesContext().getApplication().getStateManager().saveSerializedView(getFacesContext());
    getFacesContext().responseComplete();
    } catch (FileSystemException e) {
    getFacesContext().addMessage("null", new FacesMessage("Error downloading file: " +
    e.getMessage()));
    } catch (IOException e) {
    getFacesContext().addMessage("null", new FacesMessage("Error downloading file: " +
    e.getMessage()));
    Any help would be greatly appreciated!
    Thanks in anticipation, Carl

    Which JSF version are you using? Try upgrading to newer version if needed. http://javaserverfaces.dev.java.net

  • How do I display a PDF file in Adobe from h:commandLink or h:outputLink

    I am looking to add a simple "Help" link on my header.
    The idea is to add an h:outputLink or h:commandLink component and when it is clicked,
    an existing PDF file will be displayed in the default (Adobe) viewer.
    Can anyone give me a simple example of how to do that?
    Thanks.

    WOW - Quick response to this. Thanks.
    I was hoping that there was a mechanism that did not require new classes and a bunch of code (hence the wording 'simple'),
    however I realize that even what one would think of as straight forward, becomes complex when you start trying to display stuff on the client in a web application.
    Maybe there is some Javascript that could point to a file on the server and display it in a new browser window?
    The application is only intended for Windows environment, so some use can be made of inherent system support for displaying PDF files, if possible.

Maybe you are looking for

  • Font list just keeps getting longer!@!

    hello! i use suitcase fusion with my illustrator CS2. I have noticed that in some files the font list is very long, and once I open a new font or activate it it is listed in the font list and openned every time I open the file. is there a way to dele

  • Dynamic mc

    I am using flash vars to pass variables into my swf file. but i want to refetence a Mc by using a flash var. MY HTML LOOKS LIKE <script type="text/javascript"> AC_FL_RunContent(      'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash

  • Problems with File Sharing.... prev query unanswered

    Hello everyone, I posted this query last month and have yet to solve the problem. I was hoping for some fresh ideas. I am running a network on an OS X Server between three labs (around 50 computers connected). One lab has 3 IBMs running with Windows

  • How to view Images from Filesystem in Apex?

    hello, i want to view images from a network share (e.g. \\10.67.125.22\CREATIVES_DE\PRINT\THUMB\2009\06\002259044s01.JPG don´t nedd http access because it´s only intranet) in an image column of a table. unfortunatly i can´t upload them all into apex

  • Module based on a DBA table

    HI everyone, I have a big problem. i wanna generate a Froms that wil have to be dynamic with the content of the table ALL_TAB_COLUMNS. I have to be able to select in this table in the POST_QUERY. My FORM will be based on a table defined in the Reposi