Во-первых, вам нужно Converter
для преобразования между MyText
и String
. Исходя из истории ваших вопросов, я понимаю, что вы используете JSF 1.2, поэтому я дам целевой ответ JSF 1.2.
Converter
должен в основном выглядеть следующим образом (это всего лишь пример, прочитайте комментарий о том, как вы должны его реализовать):
public class MyTextConverter implements Converter {
public String getAsString(FacesContext context, UIComponent component, Object value) {
// Write code here to convert MyText to its unique String representation.
return String.valueOf(((MyText) value).getId());
}
public Object getAsObject(FacesContext context, UIComponent component, String value) {
// Write code here to convert unique String representation of MyText to MyText object.
return myTextService.find(Long.valueOf(value));
}
}
Зарегистрируйте это следующим образом в faces-config.xml
:
<converter>
<converter-for-class>com.example.model.MyText</converter-for-class>
<converter-class>com.example.converter.MyTextConverter</converter-class>
</converter>
Тогда вы можете использовать следующие данные:
<rich:inplaceSelect value="#{bean.myText}" defaultLabel="select">
<f:selectItems value="#{bean.myTextItems}" />
</rich:inplaceSelect>
с
private MyText myText;
private List<SelectItem> myTextItems;
@PostConstruct
public void init() {
myTextItems = new ArrayList<SelectItem>();
for (MyText myText : myTextService.list()) {
myTextItems.add(new SelectItem(myText, myText.getText()));
}
}
// ...