Доступ к значениям из динамического ввода текста, сгенерированного из пользовательского интерфейса: повторите JSF
<p:outputPanel id="panel">
<ui:repeat value="#{dataController.display()}"
var="item" rendered="#{Bean.showtable}">
<b:row>
<b:column col-md="5">
<h:outputText value="#{item.name}" style="font-family: verdana;font-size:16px;margin-bottom:15px;"></h:outputText>
</b:column>
<b:column col-md="7">
<h:inputText style="width:200px;height:30px;margin-bottom:15px;"
autocomplete="off"></h:inputText>
</b:column>
</b:row>
</ui:repeat>
В приведенном выше коде я использовал ui:repeat для отображения имен элементов в списке в выходном тексте вместе с входным текстом для ввода значений элементов.
Входной текст зависит от значений в списке, т.е. динамически генерируется.
Мне нужно получить доступ к значениям из входного текста и добавить их в список.
Может ли кто-нибудь предложить мне подход для доступа к значениям из входного текста в bean/list несмотря на использование ui: повторите один раз для отображения входного текста?
Я попытался создать пустой список и снова с помощью пользовательского интерфейса: повтор только для входного текста.. пытался получить доступ к значениям из входного текста. Но пользовательский интерфейс: повтор не работает снова.., как он уже использовался один раз для отображения.
Я новичок в JSF. Любая помощь будет оценена. Спасибо.
1 ответ
Не используйте пустой список. Инициализируйте его пустыми или пустыми значениями.
Допустим, у нас есть inputs
как ваш список, ваш боб должен выглядеть следующим образом.
@Named
@ViewScoped
public class DataController implements Serializable {
private List<String> inputs;
// getters and setters
@PostConstruct
public void init() {
inputs = new ArrayList<String>();
}
public List<Bean> getDisplay() {
List<Bean> display = new ArrayList<Bean>();
// add values to display
for (int i = inputs.size(); i < display.size(); i++) {
inputs.add("");
}
return display;
}
// for testing inputs
public void testInputs() {
for (String input : inputs) {
System.out.println(">>>>>" + input);
}
}
}
XHTML
<ui:repeat value="#{dataController.display()}" varStatus="idx" ...>
...
<h:inputText value="#{dataController.inputs[idx.index]}" style="width:200px;height:30px;margin-bottom:15px;" autocomplete="off"></h:inputText>
...
</ui:repeat>
<p:commandButton value="Test Inputs" action="#{dataController.testInputs}" update="@form" />
Надеюсь это поможет.