Прерывистая проблема с Struts 1.2.8 HTML taglib и JBoss - PullRequest
0 голосов
/ 10 июня 2009

У меня есть устаревшее приложение Struts 1.2.8, которое я поддерживаю и портирую с Oracle Application Server (OAS) 10g на JBoss 4.2.3. У меня есть JSP, который использует библиотеку тегов HTML Struts. Страница JSP поддерживается EJB. Пользователь вводит номер товара, и на странице отображаются детали товара (например, товар из каталога продукции).

В первые 3 раза, когда я использую эту страницу, детали товара возвращаются правильно. Но по какой-то причине при четвертом представлении страницы и последующих представлениях некоторая информация об элементе отсутствует. Я использую

<html:hidden property="itemNumber"/>
<html:text property="itemNumber"/> 

теги. Странная часть этой проблемы заключается в том, что я не могу воссоздать проблему в OAS. Кроме того, если я заменю приведенный выше тег html: text на

<input type="text" value="<%=itemForm.getItemNumber() %>" > 

Код работает правильно. Я предполагаю, что это проблема сеанса / запроса / объема. Но я не нашел правильную конфигурацию.

Требуется ли специальная конфигурация для Struts в JBoss?

Ответы [ 2 ]

0 голосов
/ 11 июня 2009

Проблема была в кешировании в движке JSP * Jasper . Конфигурация по умолчанию

enablePooling - Determines whether tag handler pooling is enabled. true or false, 
  default true. 

Мне удалось установить для enablePooling значение false, и моя проблема была решена. Я предполагаю, что это ошибка в Джаспере. Эта ошибка возникает, когда за пользовательским тегом JSP (например, html: hidden) следует атрибут jsp:, где имя равно «value». Смотри ниже.

<html:hidden property="itemNumber"/>
.
.
<html:text property="regularPrice" maxlength="9" readonly="<%=disabled%>" 
    tabindex="9" onkeyup="onRegularPriceChanged(this)">
    <jsp:attribute name="value">
        <webmodules:currency onlyDisplayValue="false">
            <jsp:attribute name="currencyValue">
                <bean:write name="updateItemForm" property="regularPrice"/>
            </jsp:attribute>
        </webmodules:currency> 
     </jsp:attribute>
 </html:text> 

Кажется, что существует пространство имен и конфликт кэширования между "значением", которое устанавливается html: hidden, и "значением", которое устанавливается атрибутом jsp :. После того, как страница JSP использовалась дважды, кешированное значение, установленное атрибутом jsp:, использовалось в качестве значения для html: hidden.

0 голосов
/ 10 июня 2009

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

...