类型转换

Posted -EASY-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类型转换相关的知识,希望对你有一定的参考价值。

index页面:

<body>
   <s:form action="dateConvert.action">
                <div class="infos">
                    <table class="field">
                        <tr>
                            <td class="field">请输入日期:</td>
                            <td><input type="text" class="text" name="timeDate" /></td>
                        </tr>
                        <s:fielderror />
                    </table>
                    <div class="buttons">
                    <s:submit value="转换格式"/>
                    </div>
                </div>
            </s:form>
  </body>

 

success页面:

<body>
      
    <s:property value="timeDate"/> <br>
  </body>

 

实体类DateConvertAction:

public class DateConvertAction extends ActionSupport {
    private Date timeDate;

    public String execute(){
        return SUCCESS;
    }
    
    public Date getTimeDate() {
        return timeDate;
    }

    public void setTimeDate(Date timeDate) {
        this.timeDate = timeDate;
    }
}

 

自定义转换器:

public class DateConverter extends StrutsTypeConverter {
    // 支持转换的多种日期格式,可增加时间格式
    private final DateFormat[] dfs = { 
            new SimpleDateFormat("yyyy 年MM 月dd 日"),
            new SimpleDateFormat("yyyy-MM-dd"),
            new SimpleDateFormat("MM/dd/yy"),
            new SimpleDateFormat("yyyy.MM.dd"), 
            new SimpleDateFormat("yyMMdd"),
            new SimpleDateFormat("yyyy/MM/dd") };

    /**
     * 将指定格式字符串转换为日期类型。
     */
    public Object convertFromString(Map context, String[] values, Class toType) {
        String dateStr = values[0];// 获取日期的字符串
        for (int i = 0; i < dfs.length; i++) {// 遍历日期支持格式,进行转换
            try {
                return dfs[i].parse(dateStr);
            } catch (Exception e) {
                continue;
            }
        }
        throw new TypeConversionException("转换错误");
    }

    public String convertToString(Map context, Object object) {
        Date date = (Date) object;
        // 输出的格式是yyyy-MM-dd
        return new SimpleDateFormat("yyyy-MM-dd").format(date);
    }
}

 

配置struts.xml配置文件:

<struts>
    <constant name="struts.custom.i18n.resources" value="message"/>
    <constant name="struts.i18n.encoding" value="UTF-8"/>
    <constant name="struts.ui.theme" value="simple"/>
    <package name="renthouse" extends="struts-default">   
        <default-action-ref name="defaultAction" />
        <action name="dateConvert" class="cn.jbit.action.DateConvertAction">
            <result name="input">index.jsp</result>
            <result name="success">success.jsp</result>
        </action>
    </package>
</struts>

 

创建一个名为xwork-conversion.properties的文本配置全局类型转换:

java.util.Date=cn.jbit.util.DateConverter

 

以上是关于类型转换的主要内容,如果未能解决你的问题,请参考以下文章

Android:片段无法转换为上下文[重复]

HTML Bookmarklet模板:将任何JavaScript代码片段转换为Bookmarklet

对象不能从 DBNull 转换为其他类型。

结合两个代码片段?将用户输入的 Youtube url 转换为嵌入 url,然后将 iframe src 替换为转换后的 url

片段无法转换为上下文

js常用代码片段(更新中)