2009-06-09 14 views
0

Oracle Application Server(OAS)10gからJBoss 4.2.3に移行して移植する従来のStruts 1.2.8アプリケーションがあります。私は、Struts HTMLタグライブラリを使用するJSPを持っています。 JSPページはEJBによってバックアップされています。ユーザが品目番号を入力すると、その品目の詳細(例えば、製品カタログの品目)がページに表示される。Struts 1.2.8 HTMLタグリブとJBossの間欠的な問題

最初の3回はこのページを使用すると、明細の詳細が正しく返されます。しかし何らかの理由で、ページの4回目の提出とその後の提出で、アイテム情報の一部が欠落しています。私は使用しています

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

タグ。この問題の奇妙な部分は、OASで問題を再現できないということです。また、上記のhtml:textタグを

に置き換えた場合
<input type="text" value="<%=itemForm.getItemNumber() %>" > 

コードは正しく動作します。私の推測では、これはセッション/リクエスト/スコープの問題です。しかし、私は正しい構成を見つけていません。

JBossのStrutsに特別な設定が必要ですか?

答えて

0

問題はJasper JSP engineでキャッシュされていました。デフォルト設定は

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

です。enablePoolingをfalseに設定できました。問題は解決されました。これはジャスパーのバグだと思う。このバグは、JSPカスタムタグ(html:hiddenなど)の後にjsp:属性が続き、その名前が「value」である場合に発生します。下記参照。隠されたとJSPによって設定された「値」:属性

<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で設定された「値」との名前空間とキャッシュの競合があるようです。 JSPページが2回使用された後、jsp:属性で設定されたキャッシュされた値がhtml:hiddenの値として使用されていました。

0

struts-config.xmlファイルのアクションに使用されているスコープを確認します。ほとんどの場合、スコープをリクエストしたいと思うでしょう。

関連する問題