Дата обработки в Struts 1 ActionForm - PullRequest
0 голосов
/ 14 ноября 2011

У меня проблема с обработкой входного параметра запроса (конечно, это тип String) до java.util.Date. Я думал, что следующий код, добавленный к моему бину, может решить эту проблему, но я ошибся:

public Date getDate() {
    return date;
}

public void setDate(Date date) {
    this.date = date;
}

public void setDate(String dateString) {
    try {
        date = DateFormat.getDateInstance().parse(dateString);
    } catch (ParseException e) {
        date = new Date();
    }
}

Выдает исключение после отправки формы:

javax.servlet.ServletException: BeanUtils.populate
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:469)
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:818)

java.lang.IllegalArgumentException: Cannot invoke com.epam.testapp.model.News.setDate - argument type mismatch
org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:1778)
org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(PropertyUtilsBean.java:1759)
org.apache.commons.beanutils.PropertyUtilsBean.setNestedProperty(PropertyUtilsBean.java:1648)
org.apache.commons.beanutils.PropertyUtilsBean.setProperty(PropertyUtilsBean.java:1677)

Является ли этот фундамент формы Struts 1 тем, что этот код не будет работать из-за несоответствия возвращаемых методов получения и получения параметров параметров установки? Как я могу решить эту проблему ? Я вообще не хочу делать метод с именем вроде setStringDate(String stringDate(){...} и думать на каждой странице, какой метод мне следует вызывать: (

Ответы [ 2 ]

1 голос
/ 14 ноября 2011

Объект даты не может быть свойством в структурах, так как формат даты может варьироваться (в зависимости от спецификации). Некоторые могут иметь dd-MM-yyyy, dd-MMMM-yy и т. Д.

Я бы предложил иметь свойство:

private String date;

public String getDate() { return date; }

public void setDate(String date) { this.date = date; }

И в вашем действии конвертируйте строку даты в Date объект.

0 голосов
/ 14 ноября 2011

Насколько мне известно, перегруженные методы не очень хорошо работают в фасонных компонентах. Попробуйте по-разному назвать два метода, и я думаю, что вам повезет больше.

...