Как я могу поместить объект bean в sessionMap, а затем получить его свойства на странице jsp, используя тег свойства Struts 2
В логине Action
Я проверяю аутентификацию пользователя, и если она проверена, я помещаю бин пользователя в sessionMap
:
public String execute()
{
if(userValid)
sessionMap.put("userBean", userBean); //userBean retrieved from DB
}
Теперь на посадочной JSP, при попытке получить элементы сеанса:
<s:property value="#session.userBean.name" />
Очевидно, это вернет Object
типа, как я храню его таким образом, так как я могу набрать каста это UserBean
учебный класс.
Я ожидал получить решение для этого в Google, но нашел его нигде, так как это, кажется, базовая реализация. Поэтому, пожалуйста, дайте мне знать, если есть какой-либо другой способ реализовать эту функцию с помощью Struts2.
2 ответа
Очевидно, вы не можете бросить его UserBean
класс, если объект не является экземпляром этого класса. В атрибуте значения вы положили строку "#session.userBean.name"
, Struts анализирует эту строку для выражения OGNL, и если это допустимое выражение, которое возвращает значение, оно заменит его на это значение. Возвращаемый тип Object
, но этот тип определяется ValueStack
реализация.
Затем тег свойства записывает этот объект в out
, Оно использует toString()
преобразовать объект в строку. И если ваш объект реализует этот метод, то это значение будет записано.
Похоже, ваше выражение возвращает Object
, который имеет тип экземпляра String
, так что уже реализован этот метод.
Это прекрасно работает для меня...
<sp:property value="#session.usertype"/>
<sp:property value="#session.bean.loginID"/>
Это хорошо сработало для меня...
sessionMap.put("bean", loginBean);
sessionMap.put("usertype", loginBean.getUserType());
Я объявил что-то вроде этого....
Просто убедитесь, что в property
пометить вас вы то же имя, которое вы использовали при установке бина в sessionMap
....
Это, вероятно, должно работать....