以下是一些Struts 2示例,以演示如何为通过List,OGNL和object生成的单选按钮预选择默认值。
1.清单
在Java代码中,创建一个List以返回单选按钮的值。
//...
List<String> genders = new ArrayList<String>();
genders.add("male");
genders.add("female");
genders.add("unknown");
//...
public List<String> getGenders() {
return genders;
}
public String getDefaultGenderValue(){
return "unknown";
}
//...
在结果页面<s:radio>标记中, list =“ genders”将调用getGenders()方法以返回单选按钮的键和值的列表。 并且值=“ defaultGenderValue”将调用getDefaultGenderValue()方法以预先选择“未知”值作为单选按钮的默认值 。
<s:radio label="Gender" name="yourGender" list="genders" value="defaultGenderValue" />
它将生成以下HTML代码…
<input type="radio" name="yourGender" id="resultAction_yourGendermale" value="male"/>
<label for="resultAction_yourGendermale">male</label>
<input type="radio" name="yourGender" id="resultAction_yourGenderfemale" value="female"/>
<label for="resultAction_yourGenderfemale">female</label>
<input type="radio" name="yourGender" id="resultAction_yourGenderunknown"
checked="checked" value="unknown"/>
<label for="resultAction_yourGenderunknown">unknown</label>
2. OGNL
在结果页面中,通过OGNL表达式创建一个单选按钮,并预先选择“ 2”作为默认值 。
<s:radio label="Answer" name="yourAnswer" list="#{'1':'Yes','2':'No'}" value="2" />
它将生成以下HTML代码…
<input type="radio" name="yourAnswer" id="resultAction_yourAnswer1" value="1"/>
<label for="resultAction_yourAnswer1">Yes</label>
<input type="radio" name="yourAnswer" id="resultAction_yourAnswer2"
checked="checked" value="2"/>
<label for="resultAction_yourAnswer2">No</label>
3.对象
在Java代码中,使用languageCode和languageDisplay属性创建一个Language对象。
//...
public class Language{
private String languageCode;
private String languageDisplay;
//getter and setter methods
}
//...
List<Language> languages = new ArrayList<Language>();
languages.add( new Language("EN", "English") );
languages.add( new Language("FR", "France") );
languages.add( new Language("CN_ZH", "Chinese") );
languages.add( new Language("DE", "German") );
//...
public List<Language> getLanguages() {
return languages;
}
public String getDefaultLanguageValue(){
return "CN_ZH";
}
//...
在结果页的<s:radio>标记中, list =“ languages”将调用getLanguages()方法以返回单选按钮的键和值的列表。 listKey =“ languageCode”表示语言的languageCode属性作为单选按钮的键; listValue =“ languageDisplay”指示语言的languageDisplay属性作为单选按钮的值。 最后一个值=“ defaultLanguageValue”将调用getDefaultLanguageValue()方法以预先选择“ CN_ZH”作为单选按钮的默认值 。
<s:radio label="Gender" name="yourLanguage" list="languages"
listKey="languageCode" listValue="languageDisplay" value="defaultLanguageValue" />
它将生成以下HTML代码…
<input type="radio" name="yourLanguage" id="resultAction_yourLanguageEN" value="EN"/>
<label for="resultAction_yourLanguageEN">English</label>
<input type="radio" name="yourLanguage" id="resultAction_yourLanguageFR" value="FR"/>
<label for="resultAction_yourLanguageFR">France</label>
<input type="radio" name="yourLanguage" id="resultAction_yourLanguageCN_ZH"
checked="checked" value="CN_ZH"/>
<label for="resultAction_yourLanguageCN_ZH">Chinese</label>
<input type="radio" name="yourLanguage" id="resultAction_yourLanguageDE" value="DE"/>
<label for="resultAction_yourLanguageDE">German</label>
参考
- http://struts.apache.org/2.0.11.2/docs/radio.html
- http://struts.apache.org/2.1.8.1/docs/struts-2-form-tags.html
- 在Struts 2中创建一个单选按钮
翻译自: https://mkyong.com/struts2/how-to-preselect-a-radio-button-value-in-struts-2/