2012-08-17 2 views
8

그래서 각 과목에 대해 학년을 선택했습니다. 미리 정의되어 있으므로 데이터베이스의 테이블로 성적을 저장할 필요가 없습니다. 나는 자격증 명 목록을 가지고 있는데 이것들을 위해 각각 jstl을 사용한다 : <c:forEach items="${qualificationdetails}" var="qd">.jstl이있는 기존 선택 태그에 선택된 옵션을 설정하십시오.

각 항목에 대해 이렇게 선택합니다.

<select class="grade" title="Grade Obtained"> 
            <option value="1">1</option> 
            <option value="2">2</option> 
            <option value="3">3</option> 
            <option value="A">A</option> 
            <option value="B">B</option> 
            <option value="C">C</option> 
            <option value="D">D</option> 
            <option value="E">E</option> 
</select> 

내 변수 QD을 사용하여 선택한 옵션을 설정할 수 있습니까? something like

<option value="${qd.grade}" selected="selecetd">${qd.grade}</option> 

이렇게하면 선택 항목에 중복 옵션이 추가됩니다. 나는 성적을 가진 배열을 만들고 옵션을 생성하기 위해 그것을 가로 질러 전송하는 것은 조금 "clunky"라고 생각한다. 어떤 아이디어?

+0

어떤 값을 기본값으로 선택해야하는지 언제 알 수 있으며 어떻게 페이지를 구문 분석 할 예정입니까? 반복 작업을 수행하는 동안 게시물의 끝 부분에 제안한 내용에 대해 생각할 수 있기 때문에 반복을 수행하지 않고 중복되지 않도록해야합니다. "qd"는 어느 것이 선택되어야 하는지를 나타내는 플래그를 가지고 있습니까? –

+0

예, qd에는 ID, 이름, 학년 및 연도가 있습니다. 이 모든 정보는 qd에서 얻을 수 있습니다. 주어진 qd의 등급 속성은 등급 값을 가질 것이고 그것은 내가 선택한 값이어야합니다. – Binaryrespawn

답변

19

JSP가 조건부로 selected 속성을 렌더링하도록 할 수 있습니다.

<select class="grade" title="Grade Obtained"> 
    <option value="1" ${qd.grade == '1' ? 'selected' : ''}>1</option> 
    <option value="2" ${qd.grade == '2' ? 'selected' : ''}>2</option> 
    <option value="3" ${qd.grade == '3' ? 'selected' : ''}>3</option> 
    <option value="A" ${qd.grade == 'A' ? 'selected' : ''}>A</option> 
    <option value="B" ${qd.grade == 'B' ? 'selected' : ''}>B</option> 
    <option value="C" ${qd.grade == 'C' ? 'selected' : ''}>C</option> 
    <option value="D" ${qd.grade == 'D' ? 'selected' : ''}>D</option> 
    <option value="E" ${qd.grade == 'E' ? 'selected' : ''}>E</option> 
</select> 

또는, 당신은 단지 등급의 컬렉션/배열을 만들고 <c:forEach>을 그 위에 루프를 사용 할 수 있도록이 EL에서 사용할 수 있도록 응용 프로그램 범위에 저장 할 수있다. 나는 이것이 어떻게 "clunky"한 것인지 확실하지 않다. <c:set>을 사용하여 commaseparated로 저장하고 fn:split()을 사용하여 <c:forEach>으로 나눌 수 있습니다.

<c:set var="grades" value="1,2,3,A,B,C,D,E" scope="application" /> 
<select class="grade" title="Grade Obtained"> 
    <c:forEach items="${fn:split(grades, ',')}" var="grade"> 
     <option value="${grade}" ${qd.grade == grade ? 'selected' : ''}>${grade}</option> 
    </c:forEach> 
</select> 

DRY 코드로 결국이 방법.

관련 문제