在我看来,我StudentModelBean用来存储表格中输入的数据.考虑我的表格的这一部分:
<h:selectManyCheckbox value="#{}">
<f:selectItem itemLabel="English" itemValue="English" />
<f:selectItem itemLabel="Hindi" itemValue="Hindi" />
<f:selectItem itemLabel="Telugu" itemValue="Telugu" />
</h:selectManyCheckbox>
Run Code Online (Sandbox Code Playgroud)
我的要求是我需要将每个选定的项值存储到languageName每个Languages对象的属性中.最后,我需要让它们进入List对象.我怎样才能做到这一点?
您需要将整个Language对象作为可用项目和所选项目提供.您还需要创建一个Converter在Language对象之间进行转换的String,这是必需的,因为HTML输出和HTTP请求参数是一个和所有String.
假设您的Language对象有两个属性code,name并且您有一个应用程序作用域bean,如下所示:
@ManagedBean
@ApplicationScoped
public class Data {
private List<Language> languages;
@PostConstruct
public void init() {
languages= new ArrayList<Language>();
languages.add(new Language("en", "English"));
languages.add(new Language("hi", "Hindi"));
languages.add(new Language("te", "Telugu"));
// ...
}
public List<Language> getLanguages() {
return languages;
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以使用它如下:
<h:selectManyCheckbox value="#{bean.selectedLanguages}" converter="languageConverter">
<f:selectItems value="#{data.languages}" var="language"
itemValue="#{language}" itemLabel="#{language.name}" />
</h:selectManyCheckbox>
Run Code Online (Sandbox Code Playgroud)
用这个豆子
@ManagedBean
@ViewScoped
public class Bean {
private List<Language> selectedLanguages;
// ...
}
Run Code Online (Sandbox Code Playgroud)
和这个转换器
@FacesConverter("languageConverter")
public class LanguageConverter implements Converter {
@Override
public String getAsString(FacesContext context, UIComponent component, Object object) {
return ((Language) object).getCode();
}
@Override
public Object getAsObject(FacesContext context, UIComponent component, String submittedValue) {
List<Language> languages = (List<Language>) context.getApplication().evaluateExpressionGet(context.getELContext(), "#{data.languages}", List.class);
for (Language language : languages) {
if (language.getCode().equals(submittedValue)) {
return language;
}
}
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6203 次 |
| 最近记录: |