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