📄 taglibhelper.java
字号:
/* * Copyright (C) butor.com. All rights reserved. * * This software is published under the terms of the GNU Library General * Public License (GNU LGPL), a copy of which has been included with this * distribution in the LICENSE.txt file. */package org.butor.web.taglib.html;import java.text.DecimalFormat;import java.text.NumberFormat;import java.text.ParseException;import java.util.Date;import java.util.StringTokenizer;import javax.servlet.jsp.JspException;import javax.servlet.jsp.PageContext;import org.apache.struts.util.ResponseUtils;import org.butor.helper.DateManip;import org.butor.log.Log;/** * @author nacroaz * * To change this generated comment edit the template variable "typecomment": * Window>Preferences>Java>Templates. */public class TagLibHelper { public static final String DATA_TYPE_NUMBER = "number"; public static final String DATA_TYPE_DATE = "date"; public static void renderText(PageContext pageContext, String text, boolean style) throws JspException { renderText(pageContext, text, style, false); } public static void renderText(PageContext pageContext, String text, boolean style, boolean isMultiLines) throws JspException { StringBuffer results = new StringBuffer(); // Style if (style) { results.append("<span class=\"static\">"); } if (isMultiLines) { StringTokenizer st = new StringTokenizer(text, "\n", true); String token = null; while(st.hasMoreTokens()) { token = st.nextToken(); if (token != null && token.equals("\n")) { results.append("<BR>"); } else { results.append(token); } } } else { // Add text results.append(text); } // Style if (style) { results.append("</span>"); } // Print this field to our output writer ResponseUtils.write(pageContext, results.toString()); } public static void renderHiddenField(PageContext pageContext, String property, String value) throws JspException { renderText(pageContext, "<input type=\"hidden\" name=\"" + property + "\" value=\"" + value + "\" >", false); } public static void renderStaticField(PageContext pageContext, String property, String value) throws JspException { renderStaticField(pageContext, property, value, false); } public static void renderStaticField(PageContext pageContext, String property, String value, String formatedValue) throws JspException { renderStaticField(pageContext, property, value, formatedValue, false); } public static void renderStaticField(PageContext pageContext, String property, String value, boolean isMultiLines) throws JspException { renderStaticField(pageContext, property, value, null, isMultiLines); } public static void renderStaticField(PageContext pageContext, String property, String value, String formatedValue, boolean isMultiLines) throws JspException { // Add value if (formatedValue != null) { renderText(pageContext, ResponseUtils.filter(formatedValue), true, isMultiLines); } else { renderText(pageContext, ResponseUtils.filter(value), true, isMultiLines); } // Add an hidden field for this property renderHiddenField(pageContext, property, value); } public static void renderStaticChecked(PageContext pageContext, String property, String value) throws JspException { // Add the checked image TagLibHelper.renderText(pageContext, "<img src=\"/_images/checked.gif\">", false); // Add an hidden field for this property TagLibHelper.renderHiddenField(pageContext, property, value); } /** * Formats value to postal code format * ex: H3B4S9 -> H3B 4S9 * * @param value * @return */ public static String formatPostalCode(String value) { if (value == null) { return null; } value = value.trim(); if (value.length() != 6) { return value; } return value.substring(0, 3) + " " + value.substring(3, 6); } /** * Transforms a value into a phone number formatted like "(999) 123-4567" * Parsing is done by extracting digits from the original value * and throwing away everything else. * * @param value * @return */ public static String formatPhoneNumber(String value) { if (value == null) { return null; } // Do nothing if phone number is incomplete if (value.length() < 7) { return value; } StringBuffer digits = new StringBuffer(); for (int i = 0; i < value.length(); i++) { char ch = value.charAt(i); if (Character.isDigit(ch)) { digits.append(ch); } } switch (digits.length()) { // Phone number only case 7: return digits.substring(0, 3) + "-" + digits.substring(3, 7); // Area code + phone number case 10: return "(" + digits.substring(0, 3) + ") " + digits.substring(3, 6) + "-" + digits.substring(6, 10); } return value; } public static String format(Object value, String dataType, String formatPattern) { if (value == null) { Log.logStr(Log.LOG_LEVEL_MEDIUM, TagLibHelper.class, Log.LOG_TYPE_WARN, "format()", "Got NULL value!"); return null; } if (dataType == null) { Log.logStr(Log.LOG_LEVEL_MEDIUM, TagLibHelper.class, Log.LOG_TYPE_WARN, "format()", "Got NULL data type!"); return value.toString(); } if (formatPattern == null) { Log.logStr(Log.LOG_LEVEL_MEDIUM, TagLibHelper.class, Log.LOG_TYPE_WARN, "format()", "Got NULL format pattern!"); return value.toString(); } if (dataType.equalsIgnoreCase(DATA_TYPE_NUMBER)) { NumberFormat nbrFormat = NumberFormat.getNumberInstance(); ((DecimalFormat)nbrFormat).applyPattern(formatPattern); Number nbr = null; if (value instanceof Number) { nbr = (Number) value; } else if (value instanceof String) { if (((String)value).trim().length() > 0) { try { nbr = new Double((String) value); } catch (NumberFormatException e) { Log.logStr(TagLibHelper.class, Log.LOG_TYPE_WARN, "format()", "Can't parse value as double! Got value=[" +value +"]." ); return null; } } } if (nbr != null) { return nbrFormat.format(nbr); } } else if (dataType.equalsIgnoreCase(DATA_TYPE_DATE)) { Date date = null; if (value instanceof Date) { date = (Date) value; } else if (value instanceof String) { try { date = DateManip.parseDate((String) value); } catch (ParseException e) { Log.logStr(TagLibHelper.class, Log.LOG_TYPE_WARN, "format()", "Can't parse value as date! Got value=[" +value +"]."); return null; } } if (date != null && !date.equals(DateManip.NULL_MIN_DATE) && !date.equals(DateManip.NULL_MAX_DATE)) { return DateManip.formatDate(formatPattern, date); } else { return ""; } } else if (dataType.equalsIgnoreCase(DATA_TYPE_DATE)) { Log.logStr(TagLibHelper.class, Log.LOG_TYPE_WARN, "format()", "Invalid data type! Got dataType=[" +dataType +"]"); } return value.toString(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -