私は、特定のコースに適用される料金を徴収するよう求められます。しかし問題は、ほとんどすべてのタイプのユーザーに同じ料金が適用されるいくつかのコースであり、いくつかのコースでは職業別の料金が適用されます。例えば、ユーザが教師である場合、彼は業界専門家である場合とは異なる手数料を有する。Spring mvc:ユーザーの入力に応じて同じ/異なる値のハッシュマップをバインドします。
データベースには事前定義された専門職があります。
ここに私のコードでのロジックがあります。
ラジオボタンによっては、適切なdivと特定のロジックをバックエンドで切り替えています。
<input type="radio" name="professionWiseFees" value="true">
<input type="radio" name="professionWiseFees" value="false">
<div id="totalAmount" class="hidden">
<input class="feeAmountOnly" name="feeAmount" type="text" />
</div>
<div id="professionWiseAmount" class="hidden">
<c:forEach items="${applicationScope.professionList}" var = "profession" >
Course Fee For ${profession.profession}
<input type="hidden" value="${profession.id}" name="profession" type="text"/>
<input class="feeAmoun2t" name="profession" type="text" />
</c:forEach>
<div>
ここで、どのタイプの手数料が適用可能であるかチェックし、それに従ってハッシュマップを入力します。 prefessionWiseFeesが適用されない場合は、すべての職業に同じ料金を追加します。
Boolean isProfessionWiseFeesApplicable = Boolean.parseBoolean(reqParams.get("professionWiseFees")[0]);
Map<Integer,Double> feeProfessionMap = new HashMap<>();
List<Profession> professions = (List<Profession>) servletContext.getAttribute("professionList");
if(isProfessionWiseFeesApplicable) {
String[] propfessionWiseFees = reqParams.get("profession");
// [1(profession_id),1000(fees),2,2000,3,7000], hence i+2 i=profession_id, i+1=fees
for(int i=0; i < propfessionWiseFees.length-1 ;i=i+2){
feeProfessionMap.put(Integer.valueOf(propfessionWiseFees[i]),Double.parseDouble(propfessionWiseFees[i+1]));
}
}
else {
double feeAmount = Double.parseDouble(reqParams.get("feeAmount")[0]);
for(Profession profession: professions){
feeProfessionMap.put(Integer.valueOf(profession.getId()),feeAmount);
}
}
courseBean.setProfessionWiseFees(feeProfessionMap);
courseBean.setProfessionWiseFees(isProfessionWiseFeesApplicable);
Modelクラス:
public class CourseBean {
// few fields
private Map<Integer, Double> professionWiseFees; // <profession_id ,fees>
// all setters and getters
}
ので、どのように私はエレガントに、この問題を解決することができ、私はrequestParam.get
の使用は、コードの可読性と保守性を減らす見つけます。
あなたは 'reqParams' –
を移入/結合されているコードの一部が、それは設計上の問題であることを示すことができ、私は上記のコード全体を掲載しています。 – piechuckerr