You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Ralf Hauser (JIRA)" <ji...@apache.org> on 2006/05/22 07:48:16 UTC

[jira] Commented: (STR-1892) timezone support for bean:write tag

    [ http://issues.apache.org/struts/browse/STR-1892?page=comments#action_37383 ] 

Ralf Hauser commented on STR-1892:
----------------------------------

see also STR-2435 and SB-20

> timezone support for bean:write tag
> -----------------------------------
>
>          Key: STR-1892
>          URL: http://issues.apache.org/struts/browse/STR-1892
>      Project: Struts Action 1
>         Type: Improvement

>   Components: Taglibs
>     Versions: 1.1 Final
>  Environment: Operating System: other
> Platform: All
>     Reporter: Dam Cho
>     Assignee: Struts Developer Mailing List
>     Priority: Minor

>
> currently as of version 1.2 of Struts custom tag library, timezone is not
> configurable for using bean:write tag with Date object. Both JSTL and apache
> date custom tags support converting date value to that of different timezone. 
> below is a subclass I created to accomodate timezone configuration. Something
> like this would do..
> public class WriteDateTag extends WriteTag {
> 	private String timeZoneString;
> 	
> 	public void setTimezone(String timeZoneString) {
> 		this.timeZoneString = timeZoneString;
> 	}
> 	
> 	public String getTimezoneString() {
> 		return timeZoneString;
> 	}
> 	
> 	/**
> 	 * Format value according to specified format string (as tag attribute or
> 	 * as string from message resources) or to current user locale.
> 	 * 
> 	 * @param valueToFormat value to process and convert to String
> 	 * @exception JspException if a JSP exception has occurred
> 	 */
> 	protected String formatValue(Object valueToFormat) throws JspException {
> 		Format format = null;
> 		Object value = valueToFormat;
> 		Locale locale =
> 			RequestUtils.retrieveUserLocale(pageContext, this.localeKey);
> 		boolean formatStrFromResources = false;
> 		String formatString = formatStr;
> 		// Try to retrieve format string from resources by the key from formatKey.
> 		if( ( formatString==null ) && ( formatKey!=null ) ) {
> 			formatString = retrieveFormatString( this.formatKey );
> 			if( formatString!=null )
> 				formatStrFromResources = true;
> 		}
> 		if (formatString == null) {
> 			if (value instanceof java.sql.Timestamp) {
> 				formatString = retrieveFormatString(SQL_TIMESTAMP_FORMAT_KEY);
> 			} else if (value instanceof java.sql.Date) {
> 				formatString = retrieveFormatString(SQL_DATE_FORMAT_KEY);
> 			} else if (value instanceof java.sql.Time) {
> 				formatString = retrieveFormatString(SQL_TIME_FORMAT_KEY);
> 			} else if (value instanceof java.util.Date) {
> 				formatString = retrieveFormatString(DATE_FORMAT_KEY);
> 			}
> 			if (formatString != null)
> 				formatStrFromResources = true;
> 		}
> 		
> 		TimeZone tz = null;
> 		if (timeZoneString != null) {
> 			tz = TimeZone.getTimeZone(timeZoneString);
> 		} else {
> 			tz = TimeZone.getDefault();
> 		}
> 		if (formatString != null) {
> 			if (formatStrFromResources) {
> 				format = new SimpleDateFormat(formatString, locale);
> 			} else {
> 				format = new SimpleDateFormat(formatString);
> 			}
> 		}
> 		
> 		
> 		if (format != null) {
> 			((SimpleDateFormat) format).setTimeZone(tz);
> 			return format.format(value);
> 		} else {
> 			return value.toString();
> 		}
> 	}
> }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/struts/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira