Message:

  A new issue has been created in JIRA.

---------------------------------------------------------------------
View the issue:
  http://jira.codehaus.org/browse/DISPL-120

Here is an overview of the issue:
---------------------------------------------------------------------
        Key: DISPL-120
    Summary: Multiple Parameters in Column URL 
       Type: Improvement

     Status: Unassigned
   Priority: Minor

 Original Estimate: Unknown
 Time Spent: Unknown
  Remaining: Unknown

    Project: DisplayTag
 Components: 
             Tag Library
   Fix Fors:
             1.0 RC2
   Versions:
             1.0 RC2

   Assignee: 
   Reporter: Ravikumar tadikonda

    Created: Thu, 18 Nov 2004 11:12 PM
    Updated: Thu, 18 Nov 2004 11:12 PM

Description:
Multiple Parameters in Column URL 

   I have added functionality in displaytag to have more than one parameter in 
column href.
this functionality also support to add displaytag id , row number in href.


example :


 <display:table name="sessionScope.productDetails" id="detailGrid" 
defaultsort="1" requestURI="" pagesize="25">
   <display:column property="productcode" href="" 
paramId="grid,rowNumber,productcode,status" 
paramProperty=":id,:rowNum,productcode,status"/>
   <display:column property="description" />
   <display:column property="status" title="Actions" />
 </display:table>
 

this will result in creating link like

http://formurl?grid=detailGrid&rowNumber=listRownumber&productcode=productcode&status=status


paramId : The list of the parameters separated by  ','
paramProperty : The list of property in the same order as paramId seperated by 
','.


      If the paramId has more than one parameter, the paramProperty list must 
have the same number of property
      If the paramId has only one parameter and paramProperty is null then the 
current column value will be added to the href.
        This is an existing functionalty and will ensule that this enhancement 
will not break the existing code.
      
      I defined two predefined paramProperty :id, :rowNum      
      :id parameter will give  the id value of the table tag .
      :rowNum will give the current row Number
      
 
 I need this functionality in my current application that I am using displaytag 
. When I search on the mailing list   for help the answer I got is use 
Decorator or Scriptlet.
 
 I need this kind of functionality in my project, which has lot of grids and I 
will end up with writing TableDecorator for each grid or writing Scriptlet in 
each grid.
 
 I thought that this is very trivial functionality and lots of users like me 
are looking for this kind of functionality built into this tag. 
 
 I want this functionality to be implemented in displaytag . I am attaching the 
diff . Pls have a look at this.
 
PS: This enhancement will satisfy the following mailing list discussions. 
 
 http://sourceforge.net/mailarchive/forum.php?thread_id=5967258&forum_id=28703
 http://sourceforge.net/mailarchive/forum.php?thread_id=5935358&forum_id=28703
 https://sourceforge.net/forum/forum.php?thread_id=975630&forum_id=249317
 https://sourceforge.net/forum/forum.php?thread_id=1094161&forum_id=249317
  
 
 Thanks
 -Ravi.
CVS patch :


Index: src/java/org/displaytag/model/Column.java
===================================================================
RCS file: 
/cvsroot/displaytag/displaytag/src/java/org/displaytag/model/Column.java,v
retrieving revision 1.17
diff -u -r1.17 Column.java
--- src/java/org/displaytag/model/Column.java   16 Nov 2004 19:27:31 -0000      
1.17
+++ src/java/org/displaytag/model/Column.java   19 Nov 2004 03:58:52 -0000
@@ -12,11 +12,13 @@
 package org.displaytag.model;
 
 import org.apache.commons.lang.ObjectUtils;
+import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.builder.ToStringBuilder;
 import org.displaytag.decorator.AutolinkColumnDecorator;
 import org.displaytag.decorator.TableDecorator;
 import org.displaytag.exception.DecoratorException;
 import org.displaytag.exception.ObjectLookupException;
+import org.displaytag.exception.InvalidTagAttributeValueException;
 import org.displaytag.util.Anchor;
 import org.displaytag.util.CompatibleUrlEncoder;
 import org.displaytag.util.Href;
@@ -133,7 +135,7 @@
      * @throws ObjectLookupException for errors in bean property lookup
      * @throws DecoratorException if a column decorator is used and an 
exception is thrown during value decoration
      */
-    public String getOpenTag() throws ObjectLookupException, DecoratorException
+    public String getOpenTag() throws DecoratorException, 
ObjectLookupException, InvalidTagAttributeValueException
     {
         this.stringValue = createChoppedAndLinkedValue();
 
@@ -156,7 +158,7 @@
      * @throws ObjectLookupException for errors in bean property lookup
      * @throws DecoratorException if a column decorator is used and an 
exception is thrown during value decoration
      */
-    public String createChoppedAndLinkedValue() throws ObjectLookupException, 
DecoratorException
+    public String createChoppedAndLinkedValue() throws DecoratorException, 
ObjectLookupException, InvalidTagAttributeValueException
     {
 
         String fullValue = ObjectUtils.toString(getValue(true));
@@ -208,36 +210,61 @@
      * @return generated Href
      * @throws ObjectLookupException for errors in lookin up object properties
      */
-    private Href getColumnHref(String columnContent) throws 
ObjectLookupException
+    private Href getColumnHref(String columnContent) throws 
ObjectLookupException ,InvalidTagAttributeValueException
     {
         // copy href
         Href colHref = new Href(this.header.getHref());
 
         // do we need to add a param?
-        if (this.header.getParamName() != null)
-        {
-
-            Object paramValue;
-
-            if (this.header.getParamProperty() != null)
-            {
-                // different property, go get it
-                paramValue = LookupUtil.getBeanProperty(this.row.getObject(), 
this.header.getParamProperty());
-
-            }
-            else
-            {
-                // same property as content
-                paramValue = columnContent;
-            }
-
-            if (paramValue != null)
-            {
-                colHref.addParameter(this.header.getParamName(), 
CompatibleUrlEncoder.encode(
-                    paramValue.toString(),
-                    this.row.getParentTable().getEncoding()));
-            }
-        }
+               String param = this.header.getParamName();
+               if (param != null)
+               {
+          
+                       String[] paramArray = StringUtils.split(param,',');
+                       
+                       String property = this.header.getParamProperty(); 
+                       
+                       if ((property == null ) && paramArray.length == 1)
+                       {
+                               colHref.addParameter(param, 
CompatibleUrlEncoder.encode(
+                                       columnContent.toString(),
+                                       
this.row.getParentTable().getEncoding()));
+                               
+                       }else
+                       { 
+                       
+                               String[] propertyArray = 
StringUtils.split(property,',');
+                               
+                               if(paramArray.length != propertyArray.length )
+                                       throw new 
InvalidTagAttributeValueException(getClass(), param, property); //$NON-NLS-1$
+                                  
+                               
+                               for(int i= 0 ; i < paramArray.length ; i++ )
+                               {
+                                       String propertyString = 
propertyArray[i];
+                                       Object paramValue = null;
+                           
+                                       if(propertyString.startsWith(":"))
+                                       {
+                                          
if(TagConstants.TABLE_TAG_ID.equals(propertyString))
+                                                paramValue = 
this.row.getParentTable().getId();
+                                          else if 
(TagConstants.TABLE_ROW_NUM.equals(propertyString))
+                                                paramValue =  
String.valueOf(this.row.getRowNumber());
+                                       } else
+                                       {
+                                               paramValue = 
LookupUtil.getBeanProperty(this.row.getObject(), propertyString);            
+                                       }
+                           
+                                       if (paramValue != null)
+                                          {
+                                                  
colHref.addParameter(paramArray[i], CompatibleUrlEncoder.encode(
+                                                          
paramValue.toString(),
+                                                          
this.row.getParentTable().getEncoding()));
+                                          }
+                               }
+                       }
+            
+               }
         return colHref;
     }
 
Index: src/java/org/displaytag/model/TableModel.java
===================================================================
RCS file: 
/cvsroot/displaytag/displaytag/src/java/org/displaytag/model/TableModel.java,v
retrieving revision 1.17
diff -u -r1.17 TableModel.java
--- src/java/org/displaytag/model/TableModel.java       16 Nov 2004 23:07:26 
-0000      1.17
+++ src/java/org/displaytag/model/TableModel.java       19 Nov 2004 03:58:52 
-0000
@@ -121,7 +121,15 @@
     {
         this.id = tableId;
     }
-
+       
+       /**
+        * Getter for the tablemodel id.
+        * @return the tableId  id of table tag
+        */
+       public String getId()
+       {
+               return this.id;
+       }
     /**
      * get the full list.
      * @return the full list containing Row objects
Index: src/java/org/displaytag/tags/TableTag.java
===================================================================
RCS file: 
/cvsroot/displaytag/displaytag/src/java/org/displaytag/tags/TableTag.java,v
retrieving revision 1.92
diff -u -r1.92 TableTag.java
--- src/java/org/displaytag/tags/TableTag.java  18 Nov 2004 19:42:28 -0000      
1.92
+++ src/java/org/displaytag/tags/TableTag.java  19 Nov 2004 03:58:54 -0000
@@ -1601,7 +1601,7 @@
      * @throws ObjectLookupException for errors in looking up properties in 
objects
      * @throws DecoratorException for errors returned by decorators
      */
-    private String getTableBody() throws ObjectLookupException, 
DecoratorException
+    private String getTableBody() throws DecoratorException, 
ObjectLookupException, InvalidTagAttributeValueException
     {
         StringBuffer buffer = new StringBuffer();
 
Index: src/java/org/displaytag/util/TagConstants.java
===================================================================
RCS file: 
/cvsroot/displaytag/displaytag/src/java/org/displaytag/util/TagConstants.java,v
retrieving revision 1.14
diff -u -r1.14 TagConstants.java
--- src/java/org/displaytag/util/TagConstants.java      13 Nov 2004 15:10:40 
-0000      1.14
+++ src/java/org/displaytag/util/TagConstants.java      19 Nov 2004 03:58:55 
-0000
@@ -255,6 +255,16 @@
      */
     public static final String EMPTY_STRING = ""; //$NON-NLS-1$
 
+       /**
+        * DisplayTag  <code>id</code> properiry.
+        */
+       public static final String TABLE_TAG_ID = ":id"; //$NON-NLS-1$
+ 
+       /**
+        * DisplayTag  <code>rowNum</code> properiry.
+        */
+       public static final String TABLE_ROW_NUM = ":rowNum"; //$NON-NLS-1$
+    
     /**
      * utility class - don't instantiate.
      */





---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.

If you think it was sent incorrectly contact one of the administrators:
   http://jira.codehaus.org/secure/Administrators.jspa

If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira



-------------------------------------------------------
This SF.Net email is sponsored by: InterSystems CACHE
FREE OODBMS DOWNLOAD - A multidimensional database that combines
robust object and relational technologies, making it a perfect match
for Java, C++,COM, XML, ODBC and JDBC. www.intersystems.com/match8
_______________________________________________
displaytag-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/displaytag-devel

Reply via email to