2014-02-11 4 views
1

У меня есть переменная java, исходящая из внешней системы. Мне нужно предварительно выбрать dorpdown на основе полученного значения.JSTL - preselect dropwdown value

Я пытаюсь протестировать приведенный ниже код, но все еще не работает.

// String myPaymentType = "I";

// Выпадающий имеет значения, как "", I, R, ИК

<select name="paymentType" id="paymentType" class="form-control"> 
     <c:forEach var="paymentType" items="${paymentTypes}"> 
     <option <c:if test='${paymentType.paymentValue == myPaymentType}' >selected</c:if> 
      value="${paymentType.paymentValue}" >${paymentType.paymentDesc}</option> 
     </c:forEach> 
    </select>              

//PaymentType.Java

private String paymentValue; 
private String paymentDesc; 
public PaymentType(String paymentValue, String paymentDesc) { 
    super(); 
    this.paymentValue = paymentValue; 
    this.paymentDesc = paymentDesc; 
} 
public String getPaymentValue() { 
    return paymentValue; 
} 
public void setPaymentValue(String paymentValue) { 
    this.paymentValue = paymentValue; 
} 
public String getPaymentDesc() { 
    return paymentDesc; 
} 
public void setPaymentDesc(String paymentDesc) { 
    this.paymentDesc = paymentDesc; 
} 

// PaymentTYpes является ArraList из PaymentType объектов

PaymentType paymentType1 = new PaymentType("","Select Payment Type"); 
     PaymentType paymentType2 = new PaymentType("I","Initial"); 
     PaymentType paymentType3 = new PaymentType("R","Recurring"); 
     PaymentType paymentType4 = new PaymentType("IR","Intial & Recurring"); 
     PaymentType paymentType5 = new PaymentType("O","Onetime"); 

     paymentTypes.add(0,paymentType1); 
     paymentTypes.add(1,paymentType2); 
     paymentTypes.add(2,paymentType3); 
     paymentTypes.add(3,paymentType4); 
     paymentTypes.add(4,paymentType5); 

// Источник HTML-кода

<select name="paymentType" id="paymentType" class="form-control">      <option value="" >Select Payment Type</option> 
     <option value="I" >Initial</option> 
     <option value="R" >Recurring</option> 
     <option value="IR" >Intial & Recurring</option> 
     <option value="O" >Onetime</option> 
     </select> 

ответ

0
//It should be 
    request.setAttribute("myPaymentType","I"); 

//Not 
    String myPaymentType = "I"; 

У меня все еще есть вопрос, как мы можем снова проверить переменную с помощью jstl? Нужно ли иметь переменную только для объекта запроса?

0

Предполагая, что на Java стороне

String myPaymentType = "I"; 
String paymentTypes = "-;I;R;IR"; 

в JSP должно работать (хорошо, он будет преобразован в Java, тоже)

<select name="paymentType"> 
    <c:forEach var="pt" items="${paymentTypes}"> 
    <option ${pt == myPaymentType ? 'selected' : ''} >${pt}</option> 
    </c:forEach> 
</select> 

если вам нужны отдельные значения для данных и отображения , вам нужно предоставить массив пар. Что-то вроде

class Pair { 
    private String data; 
    private String display; 
    public Pair (String pDisplay, String pData) { 
     data = pData; 
     display = pDisplay; 
    } 
    public String getData() { 
     return data; 
    } 
    public String getDisplay() { 
     return display; 
    } 
} 

Pair[] paymentTypes = new Pair [] {new Pair ("one", "1"), new Pair ("two", "2")}; 

Тогда вы могли бы сделать

<select name="paymentType"> 
    <c:forEach var="pt" items="${paymentTypes}"> 
    <option ${pt.data == myPaymentType ? 'selected' : ''} >${pt.display}</option> 
    </c:forEach> 
</select> 

(Предупреждение, написанное без IDE, может иметь ошибки) Это предложение не является единственно возможным решением.

+0

Thsnks для объяснения. Все, что мне нужно, чтобы эта линия работала. $ {paymentType.paymentValue == myPaymentType? 'selected': ''}. Но он все еще не работает. – user3067524

+0

Пожалуйста, поставьте код java для 'PaymentTypes'. Я думаю, что что-то не так. –

+0

обновил мое сообщение. Iam может отображать значения и описания с помощью моего исходного кода. Проблема только с предварительным выбором. – user3067524

Смежные вопросы