#jsf #datatable
#jsf #datatable
Вопрос:
Привет, пожалуйста, проверьте приведенный ниже код для вашей ссылки.
<%
System.out.println("Here???????? 111111 :::::::::::::: " request.getAttribute("COLUMNSIZE"));
if(request.getAttribute("COLUMNSIZE") != null){
int columnSize = 0;
columnSize = Integer.parseInt(request.getAttribute("COLUMNSIZE").toString());
System.out.println("Here 111111 :::::::::::::: " columnSize);
for(int loop=0 ; loop < columnSize ; loop ){
%>
<h:column>
<f:facet name="header" >
<h:outputText value="Field <%=loop%>">
</h:outputText>
</f:facet>
<h:outputText value="Password" />
</h:column>
<%
}
}
%>
</h:dataTable>
Теперь я хочу, чтобы я хотел динамически присваивать идентификатор столбцу, используя переменную цикла… но scriplets не разрешен, и я не могу найти для этого другого способа.
Так что, если у кого-то из вас есть идеи по этому поводу, пожалуйста, ответьте мне быстро.
Комментарии:
1. Удалены ненужные теги, вы можете изменить, если они не подходят
Ответ №1:
Если я правильно прочитал ваш вопрос, вы хотите динамически изменять количество столбцов вашей DataTable (возможно, я ошибаюсь).
Если вы работаете с icefaces или richfaces, почему бы вам не использовать ice:columns
or rich:columns
?
Комментарии:
1. я не занимаюсь ни тем, ни другим.. я использую чистый JSF
2. итак, почему вы используете теги richfaces / icefaces? Кстати. удобным способом достижения этого является использование библиотеки компонентов (например, rich-/ ice- / primefaces)
Ответ №2:
Скриплеты не следует путать с выражениями JSF. Приведенный ниже код можно использовать для достижения того, что вы уже пытаетесь, помещая логику в вспомогательный компонент и выглядит более читаемым.
<ui:repeat value="#{backingBean.headerNames}" var="header">
<li>
<h:outputText value="#{header.field}" />
</li>
</ui:repeat>
Для получения дополнительной информации ознакомьтесь с документацией JSF EL
Комментарии:
1. Я пытаюсь так, как вы сказали, но он выдает следующую ошибку <h: идентификатор столбца =»поле #{параметр [‘цикл’]}»> — Синтаксис [org.apache.catalina.core. Контейнерная база. [jboss.web]. [localhost]. [/ timesascentadmin]. [jsp]] Servlet.service() для сервлета jsp выдал исключение java.lang. Исключение IllegalArgumentException: последующими символами идентификатора компонента должны быть буква, цифра, подчеркивание (‘_’) или тире (‘-‘)! Но идентификатор компонента содержит «#»
2. Отредактированный ответ для достижения того же, но с элементами facelets.
Ответ №3:
Может быть, это его работа.
HtmlOutputText test = new HtmlOutputText();
test.setValue("test");
HtmlDataTable dataTable = new HtmlDataTable();
dataTable.getChildren().add(test);