当前位置: 首页 > 面试题库 >

Struts2中的日期转换

公羊英达
2023-03-14
问题内容

我想知道如何将转换StringDate在Struts2。我有一个简单的表格,其中用户以这种格式提供日期"yyyy-MM- dd"。提交后,将Sturts2映射表单发送到Bean。我在日期转换中出错。我在很多地方都使用Google进行搜索,并指出必须为此使用自定义类型转换器。我不想编写用于日期转换的自定义类型转换器。我认为Struts2中应该有一种简单的数据转换机制,因为数据转换是非常常见的功能。

JSP

<s:form action="AddDomain">
    <s:push value="idp">
        <s:textfield name="domainName"         label="Domain Name" />
        <s:textfield name="url"                label="Domain URL" />
        <s:textfield name="noOfLicense"        label="License Purchased" />

        <s:textfield name="licenseExpireDate"  label="License Expire Date" 
                                               title="YYYY-MM-DD like 2013-01-21" />

        <s:textfield name="userActiveDuration" label="Active User Duration"
                                               title="please mention in days" />

        <s:textarea  name="notes"              label="Note" cols="30" rows="5" ></s:textarea>

        <s:submit value="Add" />
    </s:push>
</s:form>

这是用户输入输入的JSP。

型号类别

@Entity
@Table(name = "Domain")
public class IdentityProvider implements Serializable {

    @Id
    @Basic(optional = false)
    private String url;
    private String domainName;
    private int noOfLicense;
    private int userActiveDuration;
    private int activeUsers;
    private Date licenseExpireDate;
    private String notes;

    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private String domainIdCode;

    public IdentityProvider(String name, String url, int nol, int time,Date d,String notes) {
        this.setDomainName(name);
        this.setUrl(url);
        this.setNoOfLicense(nol);
        this.setUserActiveDuration(time);
        this.setLicenseExpireDate(d);
        this.setNotes(notes);
    }

    public IdentityProvider() {

    }

    // Getter Setter
}

动作班

public class DomainManagementAction extends ActionSupport 
                                 implements ModelDriven<IdentityProvider> {

    private IdentityProvider idp = new IdentityProvider();

    public IdentityProvider getIdp() {
        return idp;
    }

    public void setIdp(IdentityProvider idp) {
        this.idp = idp;
    }

    public String saveDomain() {
        IDPBroker broker = new IDPBroker();
        broker.saveDomain(idp);
        return ActionSupport.SUCCESS;
    }


    @Override
    public IdentityProvider getModel() {
        // TODO Auto-generated method stub
        return idp;
    }

}

问题答案:

Struts2 类型转换

类型转换是由XWork实现的。

XWork将自动为您处理最常见的类型转换。这包括对以下每个字符串的来回转换的支持:

字符串
布尔值/布尔
字符/字符
整数/整数,浮点数/浮点数,长/长,双精度号/双
日期-使用与当前请求
数组 关联的语言环境的SHORT格式 -假设可以将单个字符串覆盖到各个项目
集合中-如果无法确定对象类型,则将其假定为String并创建一个新的ArrayList


JAVA中的简短格式:

Style     U.S. Locale   French Locale

SHORT       6/30/09       30/06/09

这意味着它已经可以使用,但只能使用SHORT格式,并且不可配置。试试吧。

然后,您可以在发送之前用一些JavaScript技巧更改客户端的值,或者复制并粘贴此小型转换器,或者使用jQuery
datetimepicker(推荐),您唯一的问题就是哪个主题最酷:)

编辑

经过一些加密评论后,我尝试了一下,显然就像文档中所述。

  • 如果您的语言环境是(例如)en_US,则需要以格式发送String数据MM/dd/yy
  • 如果您的语言环境是(例如)it_IT,则需要以格式发送String数据dd/MM/yy
  • 如果dd/MM/yy使用“ en_US语言环境” 输入,将收到验证错误和INPUT结果。
  • 如果尝试使用-代替/,它将失败。
  • 如果您以其他格式输入日期,例如 dd/MM/yyyy(不同于SHORT,但适合您的语言环境),您的日期将正确设置为相同。
  • 如果您在JSP中读取操作日期而不格式化它,它将始终显示在SHORT中。

然后,如上所述,如果您需要让用户手动输入日期,请​​告诉用户遵守您的语言环境的正确格式(例如

<label>Input a date (dd/mm/yyyy):</label> 
<s:textfield name="aDate" />
<s:fielderror fieldName="aDate" />

或在插入后通过javascript对其进行更改,或使用自定义转换器。



 类似资料:
  • 周日->明谷-0 周一->赛宁-1 周二->Selasa-2 帮我谢谢

  • 问题内容: 我一直在寻找将日期从格林尼治标准时间转换为本地时间的最简单方法。当然,要考虑适当的夏令时日期并尽可能地采用标准日期。 我能想到的最直接的代码是: 但是我认为我对返回的结果没有正确的概念。 问题答案: 这里的问题是DateFormat类具有时区。请尝试以下示例:

  • 问题内容: 我有一个测试记录数据库,其中一列“ test_time”定义为日期时间。我想查询有多少不同的日期,因为我想根据日期将测试结果转储到csv中。我现在有以下内容: 但这给了我日期时间而不是日期的列表。当然,我可以在Python中转换它,但是当我使用sqlite时。我做到了。我无法提出sqlalchemy中的等效项。 问题答案: 那将通过使用表达式: 或快捷方式: 如果使用SQLite,请尝

  • 问题内容: 是否有一个内置的转换方法为在Python,例如获得在指定日期的午夜?相反的转换很容易:有一个方法。 我真的必须手动打电话吗? 问题答案: 您可以使用;现在,您创建一个初始化为午夜的对象。

  • 问题内容: 我的json 响应 包含一个 CreatedOn 日期: 我需要将 CreatedOn 转换为简单的日期格式,并 计算从CreatedOn日期到当前日期的差异天数。 当我调试下面的代码字符串 CreatedOn时 显示一个空值。怎么会? 问题答案: 要么 考虑使用JSON方法而不是包含。JSON具有“ has()”,用于验证密钥是否存在。 您还应该确保首先尝试{}捕获{}字符串,以确保

  • 问题内容: 我正在以编程方式从ldap导出用户。因此,我正在从ldap检索用户。属性之一是。 我必须转换的值之一是:直接将其拆分成以下格式:+ 。问题在于应用程序正在CET时区运行,并且存储的时间是UTC,这可能由表示。是,并且本地表示形式是。夏季似乎是2个小时,而冬季是1个小时。 我检查了SimpleDateFormat,发现时区有一个占位符,但是它是不同的格式。 由于忽略日期时区,将显示错误的