0

RRというテーブルがあります。2つの値のセットがあります。私のテーブルは

CREATE TABLE "TSL_RR_CONFIGURATION"
  (
    "ID"                       NUMBER(19,0),
    "TRK_TYPE"                 VARCHAR2(2 BYTE),
    "MEASURE_SYSTEM"           VARCHAR2(1 BYTE),
    "MIN_LENGTH"               NUMBER,
    "MAX_LENGTH"               NUMBER,
    "MIN_WIDTH"                NUMBER,
    "MAX_WIDTH"                NUMBER,
    "MIN_HEIGHT"               NUMBER,
    "MAX_HEIGHT"               NUMBER,
    "MIN_WEIGHT"               NUMBER,
    "MAX_WEIGHT"               NUMBER,
    "LOCATION_ID"              NUMBER(19,0),
    "IDX"                      NUMBER DEFAULT 0,
    "INSERTTIME" TIMESTAMP (6),
    "UPDATETIME" TIMESTAMP (6),
    CONSTRAINT "TSL_RR_CONFIGURATION_LOCA_FK1" FOREIGN KEY ("LOCATION_ID") REFERENCES "LOCATION" ("ID") ENABLE
  )

Hibernateの1対多の関係の使用:以下は、リストをマップするための私のコードです

<list name="revRecov" table="TSL_RR_CONFIGURATION" cascade="all" access="field">
            <key column="LOCATION_ID"  />
            <index column="idx" />
            <one-to-many class="RevRecovery" />
        </list>

スプリングフォームタグを使用してJSPフォームに表示する:

    <c:forEach items="${location.revRecov}" var="item" varStatus="loop">
                <c:choose>          
                    <c:when test="${measureSys}">
                     <tr> <td><form:input path="revRecov[${loop.index}].trkType" /></td></tr>
                        <tr>
                            <td>Max Length: 
                                <form:input path="revRecov[${loop.index}].maxLength" size="15" maxlength="14" />inches</td>
                            <td>Min Length: 
                                <form:input path="revRecov[${loop.index}].minLength" size="15" maxlength="14" />inches</td> 
                            </tr>
                             </c:when>
                             <c:otherwise>
                              <tr> <td><form:input path="revRecov[${loop.index}].trkType" /></td></tr>
                      <tr><td>Max Length: 
                       <form:input path="revRecov[${loop.index}].maxLength" size="15" maxlength="14" />cm</td>
                      <td>Min Length: 
                      <form:input path="revRecov[${loop.index}].minLength" size="15" maxlength="14" />cm</td></tr>
                   </c:otherwise>
                 </c:choose>
     </c:foreach>

タグを使用<c:when test>して、インチまたはcmで値を表示します。私のリストには次のような値があります

"97" "120" "5"
"12" "400" "1"

97の場合はパッケージとしてラベルを表示し、12の場合はパレットを表示する必要があります。検証しても問題が発生します。これは、両方の行の最大値と最小値のセットが異なるためです。

そのため、そのリストを2つの異なるリストにして、JSPに渡すことができれば、検証もできると考えていました。

それを達成するための最良のシナリオは何でしょうか?2つのリストに分割した場合、それらをデータベースに保存するときに問題になりますか?

何か提案は大歓迎ですか?

編集済み:私の場合、JSPのさまざまなセットの問題を解決しますが、それでも問題を検証し続けます。2行を超える場合、インデックスを使用してすべての行のJSPに表示することはできません。

4

1 に答える 1

0

解決済み:行のインデックスを使用して、JSPで別のセットとして表示できます。これの代わりに:<form:input path="revRecov[${loop.index}].maxLength" size="15" maxlength="14" />inches</td>

これを使用しました:

<form:input path="revRecov[0].maxLength" size="15" maxlength="14" />inches</td>
<form:input path="revRecov[1].maxLength" size="15" maxlength="14" />inches</td>
于 2012-10-03T14:50:12.537 に答える