Как использовать переменные <s: property value = "var" /> в скриптах на jsp в Struts2? - PullRequest
1 голос
/ 26 июня 2011

В моем проекте Struts2 возвращено List<Object> из моего класса действий Java.Одним из элементов данных в объектах является дата в длинной форме (из базы данных MySQL).Я не уполномочен вносить изменения в структуру класса или базу данных.Мне нужно вывести эту дату как читабельную.Я хочу реализовать:

<% Date mydate = new Date (long dateAsLong); %>
<%= mydate.toString() %>

Здесь dateAsLong является членом данных возвращаемых объектов.Мне нужна эта помощь, так как я должен применять ее и в других случаях.Как я должен проверить переменные в самой JSP, используя:

<s:if test='<s:property value="priority"/> == 1'>
  /*Some img to display here*/
</s:if>

Я новичок и хочу использовать обычные стойки2 и JSP.Пожалуйста, просто помогите мне узнать, как я могу получить доступ к этой переменной, возвращенной в <s:property/>.

Спасибо.

1 Ответ

2 голосов
/ 26 июня 2011

Тег <s:set/> помещает значения в ValueStack, который недоступен в скриптлетах (я бы порекомендовал вам избегать скриплетов).

Во-первых, по теме:

<s:if test='<s:property value="priority"/> == 1'>
  /*Some img to display here*/
</s:if>

Попробуйте это:

<s:if test="%{priority == 1}">
  /*Some img to display here*/
</s:if>

Вы также можете использовать JSP EL:

<c:if test="${action.priority == 1}">
  /*Some img to display here*/
</c:if>

Что касается даты, упомянутой asdoctrey, вы можете сделать это преобразование в своем классе действий,В прошлом я занимался этим с помощью пользовательской функции JSP.

TLD

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
  version="2.0">

  <description><![CDATA[JSP Functions]]></description>
  <display-name>JSP Functions</display-name>
  <tlib-version>1.0</tlib-version>
  <short-name>ex</short-name>
  <uri>http://www.example.com/tags/jsp-functions</uri>
</taglib>

Java

/**
 * The JSTL fmt:formatDate tag expects a Date and the fmt:parseDate
 * apparently expects to parse from a String representation of the
 * date. This method allows you to easily convert a long into a Date
 * object for use in fmt:formatDate.
 * <p/>
 * The long passed in to this method is expected to be a UNIX epoch
 * timestamp (number of milliseconds since Jan. 1, 1970). For more
 * details, see {@link java.util.Date#Date(long)}.
 *
 * @param epoch The long to convert. Expected to be an epoch timestamp.
 * @return A new Date object.
 */
public static Date longToDate(final long epoch) {
  return new Date(epoch);
}

JSP

<%@ taglib prefix="ex" uri="http://www.example.com/tags/jsp-functions" %>

${ex:longToDate(action.dateAsLong)}
...