2017-09-21 9 views
0

私はThymeleafとSpringで次のコードを持っています。選択されたオプションの値を持っているリストの中には、オブジェクト全体を取り込むものもあれば、そうでないものもあります。Thymeleaf選択ドロップダウンで完全なJavaオブジェクトが設定されない

 <select id="financialYearListId" th:field="*{financialYearList}" style="width:100px; float:left;" > 
      <option th:value="0" th:text=" Select "></option> 
      <th:block th:each="finYear : ${beneficiaryData.financialYearList}"> 
       <option th:value="${finYear.id}" th:text="${finYear.financialYear}" label=" - Select - "></option> 
      </th:block> 
     </select> 
    </td> 
    <td colspan="1" align="right"><font color="red">*</font> 
     <b>From Date</b> 
    </td> 
    <td colspan="1"> 
     <input type="text" th:field="*{fromDate1}" name="from_date" class="date form-control" style="width: 100px; margin: 0px;"/> 
    </td> 
    <td colspan="1" align="right"><font color="red">*</font> 
     <b>To Date</b> 
    </td> 
    <td colspan="1"> 
     <input type="text" th:field="*{toDate1}" name="to_date" class="date form-control" style="width: 100px; margin: 0px;"/> 
    </td> 
</tr> 
<tr> 
    <td colspan="1"><font color="red">*</font> <b>Scheme</b></td> 
    <td colspan="1" width="20%"> 
     <select th:field="*{schemeCommandId}" name="scheme_id" style="width:250px" th:onchange="'getSubSchemesandBudgetHeads(this.value);'"> 
      <th:block th:each="scheme : ${beneficiaryData.schemeCommandList}"> 
       <option th:value="${scheme.id}" th:text="${scheme.schemeName}" label=" - Select - " /> 
      </th:block> 
     </select> 

を今はListオブジェクトの全体financialyearオブジェクトが取り込まれth:field="*{financialYearList}" を選択すると次のよう

public class BeneficiaryUploadCommand { 

    private List<SchemeCommand> schemeCommandList; 

    private List<BudgetHeads> budgetHeadsList; 

    @NotEmpty 
    private List<BeneficiaryType> beneficiaryTypeLists; 

    @NotEmpty 
    private List<FinancialYear> financialYearList; 

    @NotEmpty 
    private List<SubSchemes> subSchemesList; 

    private Date toDate; 

    private Date fromDate; 

    @Size(min=10, max = 10) 
    private String toDate1; 

    @Size(min=10, max = 10) 
    private String fromDate1; 

    @NotEmpty 
    private List<BenefitType> benefitTypesList; 

    @NotNull 
    private Integer beneficiariesProposed; 

    @NotNull 
    private Double stateShare; 

    private Double actualExpenditure; 

    @NotNull 
    private Double advancedExpenditure; 

    @NotNull 
    private char aadharLinkedOrNot; 

    @NotNull 
    private char cropItemDataAvailable; 

    @NotNull 
    private String schemeCommandId; 

    @NotNull 
    private String budgetHeadsListId; 
} 

Thymeleafコードがあります。しかしschemeCommandListでそれはidだけを与えるのですか?私はどのようにいくつかのオブジェクトが全体を変換することができます混乱していくつかのIDだけを提供しています。

答えて

0

の違いは、 '会計年度' のドロップダウンのために、あなたのJavaクラスが持っている、ということのようだ:

次Thymeleafマークアップに対応
private List<FinancialYear> financialYearList; 

を:

<select id="financialYearListId" th:field="*{financialYearList}"... 

しかし、 " schemeコマンドのドロップダウンには、次のマークアップがあります。

<select th:field="*{schemeCommandId}"... 

VAフィールド:つまり

private String schemeCommandId; 

、Thymeleafのマークアップは、第1のみschemeCommandIdフィールドを移入するためにそれを言っているfinancialYearListフィールドを移入する最初のドロップダウンを語っている、それは効果あなたのようです見ている。

だから、私はあなたが望む結果を得るための解決策があることを2番目のドロップダウンのためのThymeleafのマークアップを変更するだろうと想像:返信用

<select th:field="*{schemeCommandList}"... 
+0

感謝。私は* {schemeCommandList}フィールドで私は変換例外を取得しようとしました。なぜそれはいくつかではなく、いくつかのために働くのですか?その非常に不安定な – manojpotla

+0

それは間違いなく不安定ではありません!あなたが遭遇している問題は、それを使用する方法の理解になります! 'FinancialYear'クラスと' SchemeCommand'クラスの違いを比較して、なぜ動作するのか、そうでないのかを特定する必要があります。 '変換例外'は、選択した値を 'SchemeCommand'に変換できないことを伝えます。おそらく、なぜ失敗したのかという具体的な理由があります。投稿を編集し、必要に応じて2つのクラスを編集し、誰かがあなたのエラーを指摘できるかもしれません。 – DaveyDaveDave

関連する問題