0

次の2つのjspファイルがあります。

myform.jsp
<%@ page contentType='text/html; charset=UTF-8' errorPage='' %>
<%@ taglib prefix="s" uri="/struts-tags" %>

<s:form id="myform" name="myform" namespace="/" theme='simple' action='createPage' method='post'>
    <table  width='100%'>
        <tr>
            <td>
                <table width='100%'> 
                    <s:select id='parameterDataType' name='parameterDataType' theme="xhtml" required="true" key='param.datatype' list='#application.myList' emptyOption="true" listKey='listKey' listValue='listValue'/>
                </table>
                <table width='100%'>
                    <s:if test="parameterDataType != null">
                        <tr id='defParameterDefaultValue'>
                            <td class="tdLabel" >
                                <s:label cssClass="label" key="param.value"/></td>
                            <td ><%@ include file='/pages/datatypes.jsp' %></td>
                        </tr> 
                    </s:if>
                </table>
            </td>
        </tr>
    </table>
</s:form>
<script language='JavaScript' type='text/JavaScript'>
    <s:url id="reloadPage" namespace="/" action="reloadPage" />

        function reloadPage()
        {
            var form = document.forms[0];
            form.action = '<s:property value="reloadPage"/>';
            form.action += '?parameterDefaultValue=';
            form.submit();
        }    

        $("#parameterDataType").change(function()
        {
            reloadPage();
        });
</script>

datatype.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>

<s:if test="parameterDataType == 'CODE' ">
    <s:textfield id='parameterDefaultValue' name='parameterDefaultValue' theme="simple" size='27'/>
</s:if>

<s:if test="parameterDataType == 'DATE' ">
    <sj:datepicker id='parameterDefaultValue' name='parameterDefaultValue' parentTheme="simple" displayFormat="%{session.sessionAttr.pref.dateDisplayformat}" appendText="%{session.sessionAttr.pref.dateAppendText}" changeMonth="%{session.sessionAttr.pref.changeMonth}" changeYear="%{session.sessionAttr.pref.changeYear}"/>
</s:if>
<s:if test="parameterDataType == 'BUSINESS_UNIT' ">
    <s:select id='parameterDefaultValue' name='parameterDefaultValue' theme="simple" list='#session.businessUnitSelectList' listKey='id' listValue='name' emptyOption='true' />
</s:if>
<s:if test="parameterDataType == 'TERM' ">
    <s:select id='parameterDefaultValue' name='parameterDefaultValue' theme="simple" list='#session.termList' listKey='id' listValue='description' emptyOption='true' />
</s:if>

およびアクション クラス メソッド

public String reloadPage()
{
    return SUCCESS;
}

私の目的は、myform.jsp で選択した値に基づいて、datatype.jsp の a フィールドを表示することです。たとえば、ユーザーが myform.jsp 選択から CODE を選択すると、ページがリロードされて datatype.jsp が含まれます。プロパティタグを使用する場合

 <s:property value="parameterDataType" /> 

datatype.jsp の parameterDataType の値を出力するには、値 CODE を取得しますが、if ステートメントには入りません。私が間違っていることはありますか?これを達成するためのより良い方法があれば、私はそれを感謝します。

4

3 に答える 3

2

後でこのサイトで得た同様の手法を使用して問題を解決しました

<s:if test="parameterDataType == @com.myenum.Values@CODE">
    DO SOMETHING
</s:if>

あなたの応答に感謝

于 2012-05-16T06:58:47.510 に答える
0

<s:if test="#parameterDataType == 'CODE' ">ハッシュタグ ('#') を付けてみてください。

ハッシュタグは、変数を参照するために OGNL で使用されます。一部の Struts2 タグ (プロパティ タグなど) では、ハッシュタグを使用する必要はありません。これは、変数が参照されていることが暗黙的に示されているためです。つまり、プロパティ タグの 'value' 属性は常に変数を参照するため、不要です。ハッシュタグを使用して、値が変数であることを指定します。

于 2012-05-09T19:09:17.957 に答える
0

OGNL はそれほど魔法のようなものではありません。parameterDataType が文字列の場合は、次のように文字列メソッドを使用してください。

<s:if test="parameterDataType.equalsIgnoreCase('CODE')">
    DO SOMETHING
</s:if>
于 2012-05-11T01:40:05.860 に答える