Add generic custom tag attributes to pass custom parameters into a tag
----------------------------------------------------------------------
Key: WW-1811
URL: https://issues.apache.org/struts/browse/WW-1811
Project: Struts 2
Issue Type: Improvement
Components: Views
Affects Versions: 2.0.6
Reporter: Jonathan Koppenhofer
Priority: Minor
It would be nice to have a generic struts tag attribute for all tags to pass in
custom parameters into the tag to use within custom templates.
For example. I want to enable field level "mode" capabilites similar to what
can be done in Struts-Layout (http://struts.application-servers.com) for struts
1.1-1.3. This includes the ability to specify a mode (Editable, ReadOnly.
Hidden, etc...) for a field dependent on what mode (Create, Edit, Read) the
page is in. An example struts-tag could be:
<s:textfield key="firstName" somecustommodeattribute="E,E,I"/>
In the example above "E,E,I" stands for... If page is in create mode the field
is editable, if the field is in edit mode the field is ediatble, if the page is
in read mode the field is readonly (inspect)
I extended the simple text.ftl to be like:
<#if parameters.somecustommodeattribute?exists>
<#assign modeKey = 0/>
<#if Session.pageMode?exists>
<#assign modeKey = Session.pageMode?int/>
</#if>
<#if Request.pageMode?exists>
<#assign modeKey = Request.pageMode?int/>
</#if>
<#assign fieldMode =
parameters.somecustommodeattribute?substring(modeKey,modeKey+1)/>
<#else>
<#assign fieldMode = "E"/>
</#if>
<#if !(fieldMode = "N") >
<#if fieldMode = "E" >
<input type="text"<#rt/>
name="${parameters.name?default("")?html}"<#rt/>
<#if parameters.get("size")?exists>
size="${parameters.get("size")?html}"<#rt/>
</#if>
<#if parameters.maxlength?exists>
maxlength="${parameters.maxlength?html}"<#rt/>
</#if>
<#if parameters.nameValue?exists>
value="<@s.property value="parameters.nameValue"/>"<#rt/>
</#if>
<#if parameters.disabled?default(false)>
disabled="disabled"<#rt/>
</#if>
<#if parameters.readonly?default(false)>
readonly="readonly"<#rt/>
</#if>
<#if parameters.tabindex?exists>
tabindex="${parameters.tabindex?html}"<#rt/>
</#if>
<#if parameters.id?exists>
id="${parameters.id?html}"<#rt/>
</#if>
<#if parameters.cssClass?exists>
class="${parameters.cssClass?html}"<#rt/>
</#if>
<#if parameters.cssStyle?exists>
style="${parameters.cssStyle?html}"<#rt/>
</#if>
<#if parameters.title?exists>
title="${parameters.title?html}"<#rt/>
</#if>
<#include
"/${parameters.templateDir}/simple/scripting-events.ftl" />
<#include
"/${parameters.templateDir}/simple/common-attributes.ftl" />
/>
<#else>
<#include "/${parameters.templateDir}/simple/hidden.ftl" />
<#if fieldMode = "I" >
<@s.property value="parameters.nameValue"/>
</#if>
</#if>
</#if>
Now granted this is a very specific example, but it would just be nice to have
a generic parameter that I can access in my ftl templates.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.