Визуализировать HtmlSelectOneMenu только с одной записью как поле ввода только для чтения в jsf? - PullRequest
0 голосов
/ 12 апреля 2011

Ну, мы пытаемся отрисовать кучу списков. Некоторые из них имеют только одну запись, и мы хотим, чтобы они отображались как поля ввода только для чтения (чтобы пользователи не были одурачены и их было легче читать). Но, кажется, довольно сложно получить доступ к внутреннему размеру элементов снаружи. Мне пришлось переписать тег htmlselectonemenu ... Есть ли другой, более приятный способ? Возможно ли получить к нему доступ на уровне тегов?

/**
 * In case there is only one or less elements in the select list -> set readonly(true)
 */
public class HtmlSelectOneMenuModf extends HtmlSelectOneMenu {

    @Override
    public boolean isReadonly() {
        for (Iterator iterator = getChildren().iterator(); iterator.hasNext();) {
            Object obj = iterator.next();
            if ( obj instanceof UISelectItems) {
                UISelectItemsi = (UISelectItems) obj;
                if(i.getSelectItems().size() <=1)
                    super.setReadonly(true);
            }
        }
        return super.isReadonly();
    }
}

Мы отдыхаем от JSF 1.2, кстати ...

1 Ответ

1 голос
/ 12 апреля 2011

Использование JSTL fn:length().

<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
...
<h:selectOneMenu value="#{bean.item}" readonly="#{fn:length(bean.items) le 1}">
    <f:selectItems value="#{bean.items}" />
</h:selectOneMenu>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...