1

ユーザープロファイルを編集しています。ユーザーの生年月日を編集する方法が必要です。私のアクションクラスでは、dateOfBirthはCalendarオブジェクトです。次に、生年月日テキストフィールドに日付を入力する方法を説明します。

<s:textfield id="txtDob" name="dateOfBirth" />


public class Person {

    private Calendar dateOfBirth;
    public Calendar getDateOfBirth() {    
        return dateOfBirth;
    }
    public void setDateOfBirth(Calendar dateOfBirth) {    
        this.dateOfBirth = dateOfBirth;
    }
}

jspを実行すると、これがテキストフィールド内に表示されます。

java.util.GregorianCalendar[time=366229800000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Calcutta",offset=19800000,dstSavings=0,useDaylight=false,transitions=6,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=1981,MONTH=7,WEEK_OF_YEAR=33,WEEK_OF_MONTH=3,DAY_OF_MONTH=10,DAY_OF_YEAR=222,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=2,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=19800000,DST_OFFSET=0]
4

2 に答える 2

2

s:textfieldタグを使用する代わりに、dojo ajax sx:datetimepickerタグを使用してみてください。dojoタグを使用する前に、それぞれのjarファイルを追加してください。

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sx" uri="/struts-dojo-tags"%>
<html>
<head>
<title>Example/title>
<s:head />
<sx:head />
</head>
<body>
<sx:datetimepicker name="dateOfBirth" label="Date Of Birth"
     displayFormat="MM/dd/yyyy" />
</body>
</html>
于 2012-07-28T13:33:59.470 に答える
1

これは、struts2 にはすぐに使用できる型コンバーターのセットがあり、struts2 は日付変換のみをサポートし、現在の要求に関連付けられた Locale に SHORT 形式を使用するためです。

カスタム型コンバーターを作成し、struts2 にその型コンバーターを Calendar オブジェクトに使用するように指示できます。カスタム型コンバーターの作成は非常に簡単で簡単StrutsTypeConverterです.この目的のためにS2によって提供されているクラスを利用してください.

 public class MyConverter extends StrutsTypeConverter {
    public Object convertFromString(Map context, String[] values, Class toClass) {
       .....
    }

    public String convertToString(Map context, Object o) {
       .....
    }
 }
于 2012-07-28T10:46:05.820 に答える