2

JSPコード:

   <s:iterator value="#currentRequisitionGroup.plFldWrap.allPFields" var="pMap" status="hStatus">
    <s:iterator value="#pMap.value.paramMdlList" var="paramModel" status="fStat">
    <li>
     <label>
        <s:property value="#paramModel.parameterName" />

     </label> 
    <s:set var="cEdit" value="%{#paramModel.isEditable}"> </s:set>  

    <s:if test="%{#cEdit == true}">
        <s:textfield id="paramId_%{#paramModel.parameterId}" name="rqPGPrmMdl.rqGrp[%     {#cGStat.index}].plFldWrap.allPFields['%{(#pMap.key)}'].paramMdlList[%{#fStat.index}].prmValue"/>
    </s:if>
    <s:else>
         <s:textfield id="paramId_%{#paramModel.parameterId}" name="rqPGPrmMdl.rqGrp[%  {#cGStat.index}].plFldWrap.allPFields['%{(#pMap.key)}'].paramMdlList[%{#fStat.index}].prmValue" readonly="true"/>
    </s:else>    



</li> 
<s:hidden id="prmId_%{#paramModel.parameterId}" name="rqPGPrmMdl.rqGrp[%{#cGStat.index}].plFldWrap.allPFields['%{(#pMap.key)}'].paramMdlList[%{#fStat.index}].parameterId"></s:hidden> 
<s:hidden id="paramName_%{#paramModel.parameterId}" name="rqPGPrmMdl.rqGrp[%{#cGStat.index}].plFldWrap.allPFields['%{(#pMap.key)}'].paramMdlList[%{#fStat.index}].parameterName"></s:hidden>
<s:hidden id="pGId_%{#paramModel.parameterId}"  name="rqPGPrmMdl.rqGrp[%{#cGStat.index}].plFldWrap.allPFields['%{(#pMap.key)}'].paramMdlList[%{#fStat.index}].parameterGroupId"></s:hidden> 
<s:hidden id="seqNo_%{#paramModel.parameterId}" name="rqPGPrmMdl.rqGrp[%{#cGStat.index}].plFldWrap.allPFields['%{(#pMap.key)}'].paramMdlList[%{#fStat.index}].sequenceNumber"></s:hidden>

</s:iterator>
    </s:iterator>

問題は、一部の値が実際に表示されないことです。これまでの調査によると、対応するhtml入力のallPFieldsのキーにスペースがある場合、その値は実際には表示されません。 <input id="prmId_30" type="hidden" value="30" name="rqPGPrmMdl.rqGrp[1].plFldWrap.allPFields['Emp System'].paramMdlList[0].parameterId">

ただし、対応するhtml入力のallPFields のキーにスペースがない場合、その値が実際に表示されます。<input id="prmId_46" type="hidden" value="30" name="rqPGPrmMdl.rqGrp[1].plFldWrap.allPFields['Emp'].paramMdlList[0].parameterId">

ログの内容は次のとおりです。 xwork2.interceptor.ParametersInterceptor - Parameter [rqPGPrmMdl.rqGrp[1].plFldWrap.allPFields['Emp System'].paramMdlList[0].parameterId] **didn't match acceptedPattern pattern!**

4

1 に答える 1

1

これは、パラメーター名で空白が受け入れられないために発生します。ドキュメントに記載されているように、acceptParamNamesのパラメータを変更できますParametersInterceptor

acceptParamNames-受け入れられたパラメーター名のホワイトリストを説明するための正規表現のコンマ区切りリスト。セキュリティへの影響に関して何をしているのかがわからない限り、デフォルトを変更しないでください。

したがって、パラメータ名の空白を取り除くことをお勧めします。

于 2013-03-20T23:21:45.857 に答える