Как сопоставить результат с оператором return действия, возвращающего объект в Struts 2?

1

У меня есть action searchUser, для чего я создал метод getUserById, который возвращает искомый объект.

    public Employee getUserById(int userId) {

    try {
        PreparedStatement preparedStatement = connection.
                prepareStatement("select * from employee where first=? OR last=?");
        preparedStatement.setString(1, employee.getFirstName());
        preparedStatement.setString(2, employee.getLastName());
        ResultSet rs = preparedStatement.executeQuery();

        if (rs.next()) {
            employee.setId(rs.getInt("id"));
            employee.setAge(rs.getInt("age"));
            employee.setFirstName(rs.getString("first"));
            employee.setLastName(rs.getString("last"));
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }

    return employee;
}

теперь, какой должен быть совпадающий термин для результата в struts.xml, потому что обычно мы сопоставляем строку успеха. но dnt знает, как я могу сопоставить объект. Thnx

Теги:
jsp
struts2

2 ответа

0
Лучший ответ
  1. Метод Action всегда возвращает строку, например SUCCESS, ERROR, INPUT, NONE и т.д.;
  2. ваш метод не является Action, он является стандартным, поэтому его не нужно отображать в файле struts.xml;

Тем не менее, неясно, чего вы пытаетесь достичь: стандартным способом будет использование частного объекта Employee, с Getter и Setter, и заполнение его из метода Action (скажем, execute()), а затем доступ к нему из JSP по его названию; сам параметр userId должен быть частной переменной с Getter и Setter, когда он отправляется из POST/GET или из перенаправления.

Если вместо этого вы вызываете его непосредственно из тега JSP, просто используйте его.

Обратите внимание, что существует несколько способов избежать загрузки его несколько раз, например, нажав на нее поверх стека:

<s:push value="getUserById(1337)">
    <s:propery value="firstName" />
    <s:propery value="lastName" />
</s:push>

Кстати, я настоятельно рекомендую прочитать документацию/учебники/примеры перед тем, как играть в фреймворк. Большинство вещей уже есть, готовые, ожидающие обнаружения и использования должным образом.

0

Попробуйте описанный здесь проект ModelDriven. В основном вы все равно возвращаете String из execute а также вводите дополнительный метод для получения вашего объекта:

public class ModelDrivenAction implements ModelDriven { 
    public String execute() throws Exception {
        return SUCCESS;
    }

    public Object getModel() {
        return new Gangster();
    }
}
  • 0
    Почему модель везет?
  • 0
    проблема все еще там, потому что, если мне нужно вызвать getModel (), то что?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню