데이터베이스에서 varchar 메시지를 가져 와서 환자의 약물 복용량 빈도에 대한 jsp에 체크 박스 필드의 선택된 값을 표시하려고합니다. 가능한 값은 varchar에서 쉼표로 구분 된 문자열로 저장됩니다. 대부분의 양식 필드에는 하나의 양식 필드 값이 하나의 데이터베이스 필드 비율에 불과하지만이 경우 문자열로 올 수있는 값을 쉼표로 구분 된 문자열에 병합해야합니다. 그런 다음 해당 레코드를 검색 할 때 해당 환자의 투약은 selectableDosageFrequencyList에서 선택한대로 쉼표로 구분 된 문자열에서 선택한 값을 표시합니다.봄을 통해 varchar에 대한 체크 박스 값
여기에 누락 된 내용을 잘 모르는 경우 도움이 될 것입니다.
응용 프로그램 컨텍스트에서 가능한 값 목록을 ServiceBean의 일부로 만들었습니다.
<property name="selectableDosageFrequencyList">
<set>
<value>On an empty stomach</value>
<value>Every other day</value>
<value>4 times daily</value>
<value>3 times daily</value>
<value>Twice daily</value>
<value>At bedtime</value>
<value>With meal</value>
<value>As needed</value>
<value>Once daily</value>
</set>
</property>
이는 요청 범위로 설정됩니다.
<view-state id="addEditMedication" model="medication">
<on-render>
<set name="requestScope.selectableDosageFrequencyList" value="memberService.buildSelectableDosageFrequencyList(patient)" />
</on-render>
...
<transition on="next" to="assessment" >
<evaluate expression="memberService.updateMedication(patient, medication)" />
</transition>
</view-state>
나는 양식이 완료되면 양식 다음 초기화하고 때 실행해야하는 memberService에서 도우미 메서드가 있습니다.
//get the form fields selected and build the new string for db
public String setSelectedDosageFrequency(String [] dosageFrequencies){
String frequencies = null;
if (dosageFrequencies != null){
for (String s : dosageFrequencies){
frequencies = frequencies + "," + s;
}
}
return frequencies;
}
//get value from database and build selected Set
public LinkedHashSet<String> getSelectedDosageFrequencyList(String dosageFrequency){
String copyOfDosages =dosageFrequency;//may not need to do this
LinkedHashSet<String> setofSelectedDosageFrequency = new LinkedHashSet<String>();
while (copyOfDosages!= null && copyOfDosages.length()>0){
for (String aFrequency: selectableDosageFrequencyList){
if (copyOfDosages.contains(aFrequency)){
setofSelectedDosageFrequency.add(aFrequency);
if (!copyOfDosages.equals(aFrequency) && copyOfDosages.endsWith(aFrequency)){
copyOfDosages.replaceAll(","+aFrequency, "");
}else if (!copyOfDosages.equals(aFrequency) && copyOfDosages.contains(aFrequency=",")){
copyOfDosages.replaceAll(aFrequency+",", "");
}else
copyOfDosages.replaceAll(aFrequency, "");
copyOfDosages.trim();
}
}
}
return setofSelectedDosageFrequency;
}
양식을 뒷받침하는 Medication 클래스에는 투약 빈도에 대한 변수가 문자열로 포함됩니다.
private String dosageFrequency;
jsp 저는 현재 이것을하고 있습니다.
<div class="formField">
<form:label path="dosageFrequency">Dosage Frequency</form:label>
<ul class="multi-column double" style="width: 550px;">
<form:checkboxes path="dosageFrequency" items="${selectableDosageFrequencyList}" itemLabel="${selectableDosageFrequencyList}" element="li" />
</ul>
</div>