2015-12-08 3 views
2

У меня есть следующие строки кода внутри тега Struts2 <s:iterator>.Как предварительно выбрать радиокнопку внутри итератора Struts на основе значения итератора?

<s:radio name="indicatorFlag" list = "seqNoMap" value="indicatorFlag" /></div> 
<div><s:property value = "indicatorFlag"/></div> 

seqNoMap является определенным на моей странице действий следующим образом.

seqNoMap = new HashMap<String, String>(); 
seqNoMap.put("Y", " Yes "); 
seqNoMap.put("N", " No "); 

Радио кнопка отображается на моей странице, и передает информацию выбора обратно в indicatorFlag поле на странице действий, но value="indicatorFlag" в <s:radio> тега не заранее выбрать кнопку радио, даже если это распечатать Y или N в теге <s:property> на второй строке. indicatorFlag изменяет значения, когда итератор проходит через список (это поле объектов в списке, повторяющемся). Я нашел несколько мест, которые отвечают на этот вопрос, и я думаю, что я применяю ответы, которые они дают, но, очевидно, я чего-то не хватает. Любая помощь будет оценена по достоинству.

Вот код кода .

private HashMap<String, String> seqNoMap; 
private List<RefQuestionInfo> questionInfoList; 
private String indicatorFlag;  // Char (1) flag 

public RefQuestionAction(){ 
    seqNoMap = new HashMap<String, String>(); 
    seqNoMap.put("Y", " Yes "); 
    seqNoMap.put("N", " No "); 
} 

Вот код, который определяет объект RefQuestionInfo (The indicatorFlag единственное поле участвует в этом вопросе).

public class RefQuestionInfo extends BaseInfo implements Serializable { 
    private int questionId;    
    private int seqNo;     
    private String indicatorFlag;  
    private Date activeDate;    
    private Date inactiveDate;   
    private String question;    

Вот код Struts2 внутри <s:iterator> тега. Я убрал большую часть кода страницы, чтобы сосредоточиться на моей проблеме.

<s:iterator value = "questionInfoList" var = "questionInfo"> 
    <s:radio name="indicatorFlag" list = "seqNoMap" value="indicatorFlag" /> 
    <div><s:property value = "indicatorFlag"/></div> 
</s:iterator> 

Результат выглядит следующим образом.

JSP page output

Я хочу Да или Нет Значение радио быть выбраны в зависимости от Y или N, который находится на линии после радиокнопок.

+0

Не могли бы вы показать нам больше своего кода? Итератор, переменная indicatorFlag в действии и т. Д. –

+1

Потрясающая учебная программа, кстати: O –

+1

* ИндикаторFlag изменяет значения, когда итератор проходит через список * - Не уверен, что вы подразумеваете под этим. Не могли бы вы отправить код для этого. –

ответ

2

Все ваши радиокнопки имеют одно и то же имя, это означает, что вы можете выбрать только один из них. Назначьте им разные имена, используя итератор status.

<s:iterator value="questionInfoList" var="questionInfo" status="stat"> 
    <s:radio name="indicatorFlag%{#stat.index}" list="seqNoMap" value="indicatorFlag" /> 
    <div><s:property value="indicatorFlag" /></div> 
</s:iterator> 

Обратите внимание, что у вас есть переменная с таким же именем indicatorFlag внутри действия и внутри вашего RefQuestionInfo в приведенном выше коде будет использоваться один внутри RefQuestionInfo.

+1

Это сработало, спасибо! – ponder275

+0

Добро пожаловать. –

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