Datatable outputext parameter

I have a t:datatable that shows severalfields of a pojo. There's a requirement to show additional data from that bean in a 'flattened' way:
The pojo has a Set of other objects, say, a Person has a Set of Pets and every Person in the system has at least a cat and a dog for pet.
The datatable needs to show the name of the person, cat and dog in single row.
<h:column headerClass="columnHeader" footerClass="columnFooter">
  <f:facet name="header">
    <h:outputText value="Cat's name" />
  </f:facet>
  <h:column>
    <h:outputText value="#{person.pets('Cat').name}" />
  </h:column>
</h:column>I've tried to above, which doesn't work because JSF doesn't accept parameters that way. And I can't use an attribute because I don't know how to solve the binding issue. Is there an alternative next to polluting the pojo (adding explicit get methods).
dave

You can abuse a map for this purpose. If you make pets a Map (which might mean you need a nasty ORM query or manual translation of a collection type) you could pose your EL like:
<h:outputText value="#{person.pets['Cat'].name}" />But since you apparently hardwire the key in the view, you could just as easily create specialized getter methods to retrieve the name of known objects.
public void getNameOfCat(){
  // code to lookup the cat object and return its name
}I don't see why you call that "polluting", it makes the code clean and simple IMO.

Similar Messages

  • Passing DataTable as parameter - help :(

    Hi all:
    I'm really struggling here. I've been given the task of interfacing with an Oracle stored procedure through my ASP.NET application. The issue is that the stored proc takes a cursor as a parameter.
    That wouldn't be so bad, but the issue is that I don't pull the data that would populate the cursor from a database table. It's built programmatically from the variables passed to the function.
    So I figured I'd build a datatable and try passing that along as the cursor parameter.
    OracleParameter p_input = cmd.Parameters.Add(
    "p_input",
    OracleDbType.Object,
    my_data_table,
    ParameterDirection.Input);
    As the type, I've tried Object, Array (IE, turned my datatable into an array like so:
    ArrayList l = new ArrayList(t.Rows.Count);
    int count = 0;
    foreach (DataRow r in my_data_table.Rows) {
    l.Add(my_data_table.Rows[count]);
    count ++;
    and also RefCursor.
    All of the types I try just give me:
    ERROR: Exception: System.ArgumentException: Invalid parameter binding
    I'm very frustrated and not sure where to go next..
    Any advice?
    Edited by: user9354881 on Mar 19, 2010 8:39 AM

    Hi,
    I'm not clear as to what you're trying to do. You're trying to pass a .NET DataTable IN to a plsql stored procedure? Or you're trying to populate a DataTable via a refcursor?
    You cant pass a datatable in to a stored procedure; you'd need to pass an Oracle type, and you certainly cant pass in a cursor unless you got the cursor from the database.
    If you want to pass in a structure similar to a datatable, you could pass a TABLE OF OBJECT parameter if you're using 11.1.0.6.20 or higher ODP.
    If you want to populate a datatable from a refcursor, see the sample4.cs example on your hard drive in the %ORACLEHOME%\ODP.NET\samples\2.x\RefCursor folder.
    Cheers,
    Greg

  • Bring a DATATABLE from parameter

    Hi people,
    i would like to bring an ADF-Read only table from the getEmployeesFindByName function from my EJB bean sessin facade. i do not know how to do it.
    if i use hibernate for example, you would retrieve the java.util.List variable that haves the occurrences where brings that parameter, and then give that List to the ADF datatable Control on my webpage. But here i am a little bit lost.
    in my program i take the employee variable and would like to show a table depending on the "select * from employees where id_employee = 'the variable i take from the web page' " annotation i have on the Employees persistent class.
    is it possible to do it on jDeveloper / databindings?
    sincerely,
    Israel S Llorens

    If you are using ADF Data Binding this is quite simple - you just drag the method over to the page to create a parameter form, and then you drag the results of the method to create a table.
    See: http://www.oracle.com/technology/obe/obe11jdev/ps1/ejb/ejb.html#t6
    If you are trying to do this without ADF Data binding, then you'll bind the table to a collection in a managed bean, and have a button that calls the query method to populate the collection.

  • Missing Parameter Values - C# - Pushing Datatables to feed data to Report

    Hello,
    I am working on a .NET project to process close to 650 "existing" reports developed in Crystal Reports 8.5. Rendering reports without subreports is working just fine. However I am getting the following error everytime I try to render a report that has multiple subreports
    Missing parameter values. at CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException(Exception e)
    Following is how the reports are built.
    Main Report - Fed with a Datatable whose name corresponds to the name of the SQL Query configured in Crystal UI
        SubReport1 - Fed with a Datatable whose name corresponds to the name of the SQL Query configured in Crystal UI. The                           subreport is linked to the parent report using one of the fields in the Datatable that is passed to the main report.
    Example: the main report receives a datatable with the following fields
    EmployeeId (integer), EmployeeName (string)
    The subreport receives a datatable with the following fields : EmployeeId (Integer), EmployeeHobbies (string)
    The link is established as follows:
    SubReportQueryName.EmployeeId link to MainReportQueryName.EmployeeId
    _I have checked the data, its correct in terms of the fields required to render the report. The report parameters are being set from the code and ApplyCurrentValues is being called to ensure that the set values are used when rendering the report.
    Please note that I am not using live connections to the database
    I tried saving a copy of the above mentioned report and removing the subreport and then rendering the report, all works fine. However the moment i introduce the subreport, per the above mentioned report design/architecture all hell breaks loose and i cannot render the report.
    The environment is Windows Vista and I am running VS 2008.
    Any help is appreciated.
    Thanks
    Edited by: pkumbhat on Sep 15, 2010 4:43 PM

    The issue has been dealt with.
    The solution is to set the datasource with a dataset even if the report or subreport expects or is configured to work with a single table.

  • Passing a parameter to a method in the dataTable's value attribute

    Hi,
    I'm brand new to JSF, so I might be overlooking something really simple. I'm trying to use a dataTable to display data from a database. It works fine until I try to pass a parameter to "#{customer.all}". My backer bean is ready (or so I believe) and is included after the jsp code snippet. What do I need to do to the jsp/jsf code in order to pass this parameter?
    jsp code:
    <html>
       <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
       <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
       <f:view>
          <head>
             <link href="styles.css" rel="stylesheet" type="text/css"/>
             <title>
                <h:outputText value="#{msgs.pageTitle}"/>
             </title>
          </head>
          <body>
             <h:form>
                <h:dataTable value="#{customer.all}" var="customer"
                   styleClass="customers"
                   headerClass="customersHeader" columnClasses="custid,name">
                   <h:column>
                      <f:facet name="header">
                         <h:outputText value="#{msgs.customerIdHeader}"/>
                      </f:facet>
                      <h:outputText value="#{customer.Cust_ID}"/>
                   </h:column>
                   <h:column>
                      <f:facet name="header">
                         <h:outputText value="#{msgs.nameHeader}"/>
                      </f:facet>
                      <h:outputText value="#{customer.Name}"/>
                   </h:column>
                   <h:column>
                      <f:facet name="header">
                         <h:outputText value="#{msgs.phoneHeader}"/>
                      </f:facet>
                      <h:outputText value="#{customer.Phone_Number}"/>
                   </h:column>
                </h:dataTable>
             </h:form>
          </body>
       </f:view>
    </html>backer bean:
    package com.corejsf;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import javax.servlet.jsp.jstl.sql.Result;
    import javax.servlet.jsp.jstl.sql.ResultSupport;
    import javax.sql.DataSource;
    public class CustomerBean {
       private Connection conn;
       public void open() throws SQLException, NamingException {
          if (conn != null) return;
          Context ctx = new InitialContext();
          DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/mydb");
          conn = ds.getConnection();  
       public Result getAll(sName) throws SQLException, NamingException {
          try {
             open();
             Statement stmt = conn.createStatement();       
             ResultSet result = stmt.executeQuery("SELECT * FROM Customers where Name = '" + sName + "'");
             return ResultSupport.toResult(result);
          } finally {
             close();
       public void close() throws SQLException {
          if (conn == null) return;
          conn.close();
          conn = null;
    }Thanks,
    Dave

    Mogambo,
    Thanks for the response. Let me see if I understand. Let's say I have a login.jsp page, and after the user logs in I want to display all of his orders in a dataTable in summary.jsp. You're saying I should actually run the query in LoginBean.java after doing the submit, something like this right?
    login.jsp:
    <html>
       <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
       <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
       <f:view>
          <head>                 
             <title>A Simple JavaServer Faces Application</title>
          </head>
          <body>
             <h:form>
                <h3>Please enter your name and password.</h3>
                <table>
                   <tr>
                      <td>Name:</td>
                      <td>
                         <h:inputText value="#{login.name}"/>
                      </td>
                   </tr>            
                   <tr>
                      <td>Password:</td>
                      <td>
                         <h:inputSecret value="#{login.password}"/>
                      </td>
                   </tr>
                </table>
                <p>
                   <h:commandButton value="Login"
                      action="#{login.doLogin}"/>
                </p>
             </h:form>
          </body>
       </f:view>
    </html>
    LoginBean.java:
    public class LoginBean {
       private String name;
       private String password;
       private ResultSet results;
       // PROPERTY: name
       public String getName() { return name; }
       public void setName(String newValue) { name = newValue; }
       // PROPERTY: password
       public String getPassword() { return password; }
       public void setPassword(String newValue) { password = newValue; }
       // PROPERTY: results
       public ResultSet getResults() { return results; }
       public void setResults(String newValue) { results = newValue; }
       public String doLogin(){
           Integer liUserID = null;
           // authenticate user and return user's internal ID
           liUserID = authenticateUser(name, password);
           if ( liUserID == null){
                return "failure";
          else{
               results = getUserOrders(liUserID);
               return "success";
    faces-config.xml:
    <?xml version="1.0"?>
    <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">
       <navigation-rule>
          <from-view-id>/login.jsp</from-view-id>
          <navigation-case>
             <from-outcome>login</from-outcome>
             <to-view-id>/summary.jsp</to-view-id>
          </navigation-case>
       </navigation-rule>
       <managed-bean>
          <managed-bean-name>login</managed-bean-name>
          <managed-bean-class>LoginBean</managed-bean-class>
          <managed-bean-scope>session</managed-bean-scope>
       </managed-bean>
    <navigation-rule>
        <from-view-id>/login.jsp</from-view-id>
        <navigation-case>
          <from-action>#{login.doLogin}</from-action>
          <from-outcome>success</from-outcome>
          <to-view-id>/summary.jsp</to-view-id>
        </navigation-case>
         <navigation-case>
          <from-action>#{login.doLogin}</from-action>
          <from-outcome>failure</from-outcome>
          <to-view-id>/login.jsp</to-view-id>
        </navigation-case>
      </navigation-rule>
    </faces-config>And then I assume that my summary.jsp would look like this, using login.results as my value for the dataTable?
    <html>
       <%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
       <%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
       <f:view>
          <head>
             <link href="styles.css" rel="stylesheet" type="text/css"/>
             <title>
                <h:outputText value="#{msgs.pageTitle}"/>
             </title>
          </head>
          <body>
             <h:form>
                <h:dataTable value="#{login.results}" var="order"
                   styleClass="orders"
                   headerClass="ordersHeader" columnClasses="orderid,name">
                   <h:column>
                      <f:facet name="header">
                         <h:outputText value="#{msgs.orderIDHeader}"/>
                      </f:facet>
                      <h:outputText value="#{order.Order_ID}"/>
                   </h:column>
                   <h:column>
                      <f:facet name="header">
                         <h:outputText value="#{msgs.nameHeader}"/>
                      </f:facet>
                      <h:outputText value="#{order.Name}"/>
                   </h:column>
                   <h:column>
                      <f:facet name="header">
                         <h:outputText value="#{msgs.phoneHeader}"/>
                      </f:facet>
                      <h:outputText value="#{order.Phone_Number}"/>
                   </h:column>
                </h:dataTable>
             </h:form>
          </body>
       </f:view>
    </html>Does this look reasonable?
    Thanks,
    Dave

  • Need to set a parameter to a method from DataTable

    Hi. I'm trying to work this problem out. I have to make a call to a method which is in a bean from a JSF DataTable. My method is something like String method(String). What I would like to do, is to call this method from a JSF DataTable in order to fill a column or two. I'd like to know how I can set this parameter from my JSF, something like "#{mybean.method[i need my string to be here]}". I would also like to know if it is possible that the parameter is another bean, I mean, if it is possible, something like "#{mybean.method[#{anotherbean.property}]}". I'll really appreciate some help, I hope you'll help me.

    wow, thats about impossible to follow.
    Let me take a stab.
    If you want to save a value for later use when an exception is thrown, throw your own exception type that stores this info in the exception.
    Or perhaps you are asking something completely different.

  • Deleting a single row from a dataTable / database

    Hi,
    I am fairly new to JSF so please bear with me if the answer is obvious :D. I'm using a dataTable component to display data from a database and would like to add a commandLink component to every row in the table that deletes that row from the database. What is the most effective way of doing this?
    I'm thinking of using a ListDataModel with some function that removes the correct row (though I'm not sure how it will tie in with a commandLink and exactly where the database will be updated). I'll appreciate any pointers or perhaps even an online example of something similar.
    Alternatively I suppose you could pass an "id" parameter on with the commandLink that somehow gets read in the request and the appropriate row is removed accordingly. This solution seems cumbersome however.

    jabalsad wrote:
    Hi,
    I am fairly new to JSF so please bear with me if the answer is obvious :D. I'm using a dataTable component to display data from a database and would like to add a commandLink component to every row in the table that deletes that row from the database. What is the most effective way of doing this?
    I'm thinking of using a ListDataModel with some function that removes the correct row (though I'm not sure how it will tie in with a commandLink and exactly where the database will be updated). I'll appreciate any pointers or perhaps even an online example of something similar.
    Alternatively I suppose you could pass an "id" parameter on with the commandLink that somehow gets read in the request and the appropriate row is removed accordingly. This solution seems cumbersome however.Yes, your instincts are correct there. Binding the data model to a backing bean to get the UIData instance for the table. Then use UIData.getRowData() to get the object corresponding to the row containing the link/button. Then execute your business logic to delete the row from the database. Then you need to ensure the data model is updated to reflect the new state of the database.

  • Problem calling a method which takes a parameter from a table

    Hi guys,
    I'm very new to jsf and hope you can help me out.
    On my page i'm generating a list, which is working fine. now i want to add some commandLinks to the list entries. on click, i want to execute a bean method, which takes a parameter from the list, generates a picture and displays it on my page.
    here's a piece of code thats already working:
    <rich:dataTable var="data" value="#{pathwayBean.orgList}">
    <rich:columnGroup>     
            <rich:column>     
               <h:outputText value="#{data.name}" />
         </rich:column>
    </rich:columnGroup>
    </rich:dataTable>now, i want to replace the outputText with a commandLink, and execute a method with {data.id} as parameter. Unfortunately, the commandLink property "action" can only call bean methods with no parameter, or is that wrong?
    Thanks in advance,
    Alex

    use actionlistener.
    here a typical code that works fine for me:
    (JSF 1.2)
    //Java
    private Integer selectedItemId=null;
         public void selectItem(ActionEvent event) {
              // Find the UIParameter component by expression
              UIParameter component = (UIParameter) event.getComponent().findComponent("itemId");
              // parse the value of the UIParameter component
              try {
                   selectedItemId = Integer.parseInt(component.getValue().toString());
                   // find itemBean here using selectedItemId
              } catch (Exception e) {
                   logger.error(e, e);
              logger.info(" +++ selectedItemId =" + selectedItemId);
         public String viewItem() {
                 //create view beans here
                 return "itemView";//return appropriate view.
    //JSF
    <h:column>
                             <h:commandLink     id="View"
                                                 action="#{itemListBean.viewItem}"
                                                       actionListener="#{itemListBean.selectItem}">
                                  <h:outputText value="select"/>
                                  <f:param id="itemId" name="itemId" value="#{itemBean.id}"/>
                             </h:commandLink>
                     </h:column>

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

  • Oracle Instant Client and OUT Parameter of custom type in Stored Procedures

    Hi @ all!
    I try to set up a simple client application, that calls a stored procedure via Instant Client from C#.
    The stored procedure and assiciated types looks like this:
    TYPE MYVALUE AS OBJECT
          Id      INTEGER,
          value     FLOAT
    TYPE MYVALUELIST AS TABLE OF MYVALUE;
    PROCEDURE ReadValues( ID IN INTEGER,
                                        RESULTSET OUT MYVALUELIST)
                                           IS
    ...I created an Oracle Command executing this SP and added OracleParameters for ID and (where I got stuck) the RESULTSET.
    Is it possible to pass a parameter with a custom type from C# in some way?
    I already tried it as a function with SELECT * FROM TABLE(ReadValues(1));
    With my parameter RESULTSET as the RETURN type. But since I use DML within the procedure, this does not work inside of a query...
    Any suggestions?
    Thanks in advance!

    Hi Greg!
    Sorry, I misunderstood the forum topic then. =(
    Anyway, in the example you provided in the link, this is nearly exactly my situation. But there the Oracle.DataAccess.Client is used, where the OracleDBType can be called to initialize an object of type person. I use the instant client libraries called by using System.Data.OracleClient. There is only the OracleType enum, that does not contain an object or something similar.
    So I do it right now after trying a bit with a ref cursor parameter and an OracleDataAdapter - the ref cursor is passed back from Oracle as a DataReader, so die DataAdapter is able to use it for a .Fill():
    OracleCommand cmd = new OracleCommand();
    cmd.Parameters.Add("RESULTSET", OracleType.Cursor).Direction = ParameterDirection.Output;
    OracleDataAdapter odr = new OracleDataAdapter(cmd);
    DataTable result = new DataTable();
    odr.Fill(result);Within my stored procedure I just added the following OUT parameter:
    PROCEDURE ReadValues( ID IN INTEGER,
                                        RESULTSET OUT sys_refcursor)
                                           IS
    currentlist MYVALUELIST;
    ... [Adding elements to that list] ...
    OPEN resultset for select * from TABLE(currentlist);It works now, but I don't like that solution that much since I'm always afraid that there are lots of opened cursors idyling around. Do I have to close this one explicitly after filling my table by the DataAdapter?
    Regards

  • Stored Procedure parameter (@Carrier) used in report and can't be set via code

    I have a report that has regular Crystal parameters that I am setting correctly via code.  However, one report actually uses one of the database parameters from the stored procedure that the report was created from.  It is the only report like this and I'm using the same code in an attempt to set it's value.  Although no error is thown, if I look at the parameter value in the IDE it is set correctly, but the field on the report just shows up blank.  I have changed the way the report is created.  Previously, I used the report.export method to create the actual file via a stored procedure.  Now, I'm running the stored procedure first and creating a datatable.  This allows me to execute the SP only once to see if it has data, because only then do I want to create the actual report.  I'm using the SetDataSource method to pass the datatable into Crystal and then using the report.export method to create the report with data.  Everything seems to work, except this stored procedure parameter (@Carrier) is not actually being populated to display on the report.
    Not sure what to look at.  Any suggestions?
    Thanks.

    crpe32.dll is version 13.0.5.891.  This was developed in VS2012 and VB.NET.  I'm using ADO.Net to connect to a MS SQL Server database.
    MainReport.SetDataSource(DTbl)
    bRC = PopulateAllSubReports(MainReport)
    If Not bRC Then Throw New Exception("Received an error in PopulateAllSubReports.")
    bRC = PopulateCrystalParameters(MainReport, SP)
    If Not bRC Then Throw New Exception("Received an error in PopulateCrystalParameters.")
    'Actually create the output file.
    bRC = ExportData(MainReport)
    Private Function PopulateCrystalParameters(myReportDocument As ReportDocument, SP As ReportStoredProcedureCrystal) As Boolean
         Dim myParameterFieldDefinitions As ParameterFieldDefinitions = Nothing
         Dim myParameterFieldDefinition As ParameterFieldDefinition = Nothing, ParamValue As String = ""
         Dim bRC As Boolean, Param As SqlParameter = Nothing
         Try
         myParameterFieldDefinitions = myReportDocument.DataDefinition.ParameterFields
    '*********************Report Parameters***************************
         For Each myParameterFieldDefinition In myParameterFieldDefinitions
              myParameterFieldDefinition.CurrentValues.Clear()
              Select Case myParameterFieldDefinition.ParameterFieldName.Trim.ToUpper
              Case "@CARRIER"
                   If SP.DBParameters.ContainsKey("@CARRIER") Then
                        Param = SP.DBParameters("@CARRIER")
                        ParamValue = NullS(Param.Value).Trim
                        bRC = SetCurrentValueForParameterField(myParameterFieldDefinition, ParamValue)
                        If Not bRC Then Return False
                   End If                           
              End Select
         Next
         Return True
         Catch ex As Exception
         GmcLog.Error("ReportKey = " & Me.ReportKey.ToString & ", " & ex.Message, ex)
         Return False
         End Try
    End Function
    Private Function SetCurrentValueForParameterField(myParameterFieldDefinition As ParameterFieldDefinition, submittedValue As Object) As Boolean
         Dim currentParameterValues As ParameterValues = Nothing
         Dim myParameterDiscreteValue As ParameterDiscreteValue = Nothing
         Try
         myParameterDiscreteValue = New ParameterDiscreteValue
         myParameterDiscreteValue.Value = NullS(submittedValue).Trim
         currentParameterValues = New ParameterValues
         currentParameterValues.Add(myParameterDiscreteValue)
         myParameterFieldDefinition.ApplyCurrentValues(currentParameterValues)
         Return True
         Catch ex As Exception
         GmcLog.Error("ReportKey = " & Me.ReportKey.ToString & ", " & ex.Message, ex)
         Return False
         Finally
         myParameterDiscreteValue = Nothing
         currentParameterValues = Nothing
         End Try
    End Function
    Private Function SetDBSourceForSubReport(mySubReport As ReportDocument) As Boolean
         Dim myTables As Tables = Nothing, myTable As Table = Nothing, DTbl As DataTable, SP As StoredProcedure = Nothing
         Try
         myTables = mySubReport.Database.Tables
         For Each myTable In myTables
              Dim SPName As String = myTable.Location.Substring(0, myTable.Location.IndexOf(";"c))
              SP = New StoredProcedure(ConnectionString, SPName, CommandType.StoredProcedure)
              DTbl = SP.FillTable
              mySubReport.SetDataSource(DTbl)
              SP = Nothing
         Next
         Return True
         Catch ex As Exception
         GmcLog.Error("ReportKey = " & Me.ReportKey.ToString & ", " & ex.Message, ex)
         Return False
         Finally
         If Not SP Is Nothing Then SP = Nothing
         If Not myTable Is Nothing Then myTable = Nothing
         If Not myTables Is Nothing Then myTables = Nothing
         End Try
    End Function
    Private Function PopulateAllSubReports(myReportDocument As ReportDocument) As Boolean
         Try
         Dim mySections As Sections = myReportDocument.ReportDefinition.Sections
         For Each mySection As Section In mySections
              Dim myReportObjects As ReportObjects = mySection.ReportObjects
              For Each myReportObject As ReportObject In myReportObjects
                   If myReportObject.Kind = ReportObjectKind.SubreportObject Then
                        Dim mySubreportObject As SubreportObject = CType(myReportObject, SubreportObject)
                        Dim subReportDocument As ReportDocument = mySubreportObject.OpenSubreport(mySubreportObject.SubreportName)
                        Dim bRC = SetDBSourceForSubReport(subReportDocument)
                        If Not bRC Then Return False
                   End If
              Next
         Next
         Return True
         Catch ex As Exception
         GmcLog.Error("ReportKey = " & Me.ReportKey.ToString & ", " & ex.Message, ex)
         Return False
         End Try
    End Function

  • How to obtain the row data in the component datatable?

    if I want to edit a row data, and then know which row is edited in the component datatable, and how to do?
    How to obtain the row data in the component datatable, and update it to database, not simplely edit a simple table
    Any ideas? Thanks

    Thank you very much for your help Alexander !
    It's quite confusing when you leave Struts and try to adapt your projects for JSF for the first time...
    I wanted to click on a row with a "onMouseClick" on the TR tag like I used to do in Struts/JSTL. But it seems to be impossible in a dataTable.
    Ok then. I've added a column at the end of the row with an icon.
    But eventually I didn't need to declare link parameters.
    In my BackingBean I did like this :
    public String selectEventForUpdate() throws IllegalAccessException, InvocationTargetException {
            PortletAgenda event = (PortletAgenda) JSFUtils.getInRequestMap("event");
            BeanUtils.copyProperties(this, event);
            return null;
       }JSFUtils.getInRequestMap(...) is a method I wrote in a util object :
    public static Object getInRequestMap(String name) {
            Object res = null;
            Map requestMap=FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
            if (requestMap!=null) {
                res=requestMap.get(name);
            return res;
    }  " event " is the name of the item in my dataTable list.
    My backingBean has the same attributes as "event".
    So when the page is reloaded I have a backingBean full with the selected properties to edit/update.
    Thanks to your reply I realized that putting this form in the middle of the dataTable seems to be impossible.
    So I put this form in a floating DIV in front of the table with a shadow.
    It works :o) !
    But I'm a little bit disapointed to be honest...
    I used to build my web applications with Struts and JSTL and doing this kind of interface was really easy.
    I've decided 3 days ago to convert into JSF because the "GUI Layer" seemed to be improved.
    But now I realize that I cannot put a onMouseOver and onMouseClick on a row and I cannot display a different row in the middle of a table....
    I think it's a shame because there is a facet for header and footer.
    And it would be great if we could create our own personal facet that appears only if a condition is true.
    For exemple " if the current item id is the same as the request parameter id then display the following facet content ....... (with a panel group and a form inside to update the row) "
    It's easy to do that with JSTL thanks to c:forEach and c:if but it seems to be impossible to use JSTL tags like this during the dataTable iteration.
    And JSF tags seems to have no logical tags like " if " or loops that can be nested in dataTable.
    I really need to realize this interface (you click on a row then an edit form appears where you clicked).
    Do I have to write a component myself that extends dataTable?
    Do you know if writing such a component is hard to do for a beginner like me?
    (I've juste discovered JSF 3 days ago and I've used Struts/JSTL for 2 years til now)
    I'd be glad to have much advices from you about that.
    Regards

  • BUG JSF h:dataTable with JDBC ResultSet - only last column is updated

    I tried to create updatable h:dataTable tag with three h:inputText columns with JDBC ResultSet as data source. But what ever I did I have seceded to update only the last column in h:dataTable tag.
    My JSF page is:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <%@ page contentType="text/html;charset=windows-1250"%>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
    <f:view>
    <html>
    <head>
    <meta http-equiv="Content-Type"
    content="text/html; charset=windows-1250"/>
    <title>Stevan</title>
    </head>
    <body><h:form>
    <p>
    <h:messages/>
    </p>
    <p>
    <h:dataTable value="#{tabela.people}" var = "record">
    <h:column>
    <f:facet name="header">
    <h:outputText value="PIN"/>
    </f:facet>
    <h:inputText value="#{record.PIN}"/>
    </h:column>
    <h:column>
    <f:facet name="header">
    <h:outputText value="Surname"/>
    </f:facet>
    <h:inputText value="#{record.SURNAME}"/>
    </h:column>
    <h:column>
    <f:facet name="header">
    <h:outputText value="Name"/>
    </f:facet>
    <h:inputText value="#{record.NAME}"/>
    </h:column>
    </h:dataTable>
    </p>
    <h:commandButton value="Submit"/>
    </h:form></body>
    </html>
    </f:view>
    My java been is:
    package com.steva;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    public class tabela {
    private Connection conn;
    private ResultSet resultSet;
    public tabela() throws SQLException, ClassNotFoundException {
    Statement stmt;
    Class.forName("oracle.jdbc.OracleDriver");
    conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "hr", "hr");
    stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
    resultSet = stmt.executeQuery("SELECT PIN, SURNAME, NAME FROM PERSON");
    public ResultSet getPeople() {
    return resultSet;
    I have instaled “Oracle Database 10g Express Edition Release 10.2.0.1.0” – product on my PC localy. I have enabled HR schema and I have instaled and pupulated with sample data folloving table:
    CREATE TABLE "PERSON"
    (     "PIN" VARCHAR2(20) NOT NULL ENABLE,
         "SURNAME" VARCHAR2(30),
         "NAME" VARCHAR2(30),
         CONSTRAINT "PERSON_PK" PRIMARY KEY ("PIN") ENABLE
    I have:
    Windows XP SP2
    Oracle JDeveloper Studio Edition Version 10.1.3.1.0.3894
    I am not shure why this works in that way, but I think that this is a BUG
    Thanks in advance.

    Hi,
    I am sorry because of formatting but while I am entering text looks fine but in preview it is all scrambled. I was looking on the Web for similar problems and I did not find anything similar. Its very simple sample and I could not believe that the problem is in SUN JSF library. I was thinking that problem is in some ResultSet parameter or in some specific Oracle implementation of JDBC thin driver. I did not try this sample on any other platform, database or programming tool. I am new in Java and JSF and I have some experience only with JDeveloper.
    Java been(session scope):
    package com.steva;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    public class tabela {
    private Connection conn;
    private ResultSet resultSet;
    public tabela() throws SQLException, ClassNotFoundException {
    Statement stmt;
    Class.forName("oracle.jdbc.OracleDriver");
    conn = DriverManager.getConnection
    ("jdbc:oracle:thin:@localhost:1521:xe", "hr", "hr");
    stmt = conn.createStatement
    (ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
    resultSet = stmt.executeQuery("SELECT PIN, SURNAME, NAME FROM PERSON");
    public ResultSet getZaposleni() {
    return resultSet;
    JSF Page:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <%@ page contentType="text/html;charset=windows-1250"%>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
    <f:view>
    <html>
    <head>
    <meta http-equiv="Content-Type"
    content="text/html; charset=windows-1250"/>
    <title>Stevan</title>
    </head>
    <body><h:form>
    <p>
    <h:messages/>
    </p>
    <p>
    <h:dataTable value="#{tabela.zaposleni}" var = "record">
    <h:column>
    <f:facet name="header">
    <h:outputText value="PIN"/>
    </f:facet>
    <h:inputText value="#{record.PIN}"/>
    </h:column>
    <h:column>
    <f:facet name="header">
    <h:outputText value="Surname"/>
    </f:facet>
    <h:inputText value="#{record.SURNAME}"/>
    </h:column>
    <h:column>
    <f:facet name="header">
    <h:outputText value="Name"/>
    </f:facet>
    <h:inputText value="#{record.NAME}"/>
    </h:column>
    </h:dataTable>
    </p>
    <h:commandButton value="Submit"/>
    </h:form></body>
    </html>
    </f:view>

  • Pass parameter to dynamically assign datasource?

    Post Author: bradness
    CA Forum: Data Connectivity and SQL
    I've been struggling with this one... I have a current set of reports that run on a single set of SQL queries. The problem is that at the end of each period (lets just say a year) the tables and queries are archived and relabled with <tablenameyear>/<querynameyear>, so that each query will pull the appropriate year's data. Can I pass a parameter to my reports that will tell the report which set of queries to use as the datasource? And can this be passed onto each subreport within the Parent report?
    Thanks in advance.

    Post Author: bradness
    CA Forum: Data Connectivity and SQL
    SUCCESS! Thank you kcheeb for your help!
    I don't know why it required that I do it this way, but it works.My report and 4 subreports used a total of 7 different tables (which were already defined in SQL database)I had to create all 7 tables in VB as follows
    conn_string.open()Dim SQL as string = "SELECT * FROM mytable"Dim cmd as new sqlCommand(SQL, conn_string)Dim dr as sqldatareaderdr = cmd.executereaderDim nTable as datatable = new dataTablenTable.Load(dr)conn_string.close()
    Then using some logic to determine object was report or subreport, I had to set the datasource for each table that was original contained in the report. Using
    crdocument.Database.Tables("tableName").SetDataSource(nTable)   for main report tablescrdocument.OpenSubreport("subreportName").Database.Tables("tableName").SetDataSource(nTable) for subreport tables

  • DataTable with dynamic columns

    Does somebody have an example of how to code a h:dataTable with dynamic columns? I have seen hints about how to do it in these two articles:
    http://forum.java.sun.com/thread.jspa?forumID=427&threadID=5218508
    http://forum.java.sun.com/thread.jspa?threadID=577589&messageID=2909047
    but a complete working example would be really helpful.
    I think the key is understanding the "binding" parameter to h:dataTable but I'm having a hard time understanding it. Thanks.

    I found it here:
    http://balusc.blogspot.com/2006/06/using-datatables.html#PopulateDatatable

Maybe you are looking for

  • Solaris 8 graphical logon (CDE) in branded zone

    How do I enable/configure a graphical interface (cde) for my Solaris 8 branded zone in solaris 10?

  • Spell checker in SAP

    Hello, Please can I request that a spell checker be considered for a future release/version of SAP. Many thanks, Kate

  • Need some help with a Photo. RGB to CMYK.

    I took a good friend of mines Senior photos and the yearbook requires  them to use CMYK colors, like most things that are being printed. Whenever I do the conversion via Photoshop CS5 everything looks fine, the image looks great. Here's the image in

  • Serious Problem with Verizon

    I have a huge problem with Verizon.  I took my adult son to a local Verizon store and bought him a phone. When the phone was activated and an account set up, the clerk used MY personal information with my SON'S address for the service!  My son defaul

  • *Help* White Screen on Ipod touch 2g?

    Hello, yesterday my i attepted to turn on my ipod and it revealed a white screen and hasn't gone off of it since. I have tried restoring it, but it still is on the white screen. Is there anyone that this has happened to or any way way i can fix this.