无法从 <ui:repeat> var status 设置 List<String> 值
Cant set List<String> value from <ui:repeat> var status
在我的 xhtml 中,我定义了一个 inputText 变量,我想从中为列表中的特定字段设置特定值。每次我单击确认并调试我的代码时,该值都返回为“”(我在我的 init 函数中设置)。我还尝试将我的 inputText 值硬编码为 dashboardFilterDialogBean.dashboardObject.texts[0]
,就像我定义的列表中的唯一项目一样,但仍然没有结果。我的控制台出现 0 个异常
Xhtml
<p:dialog id="dashboardFilterDialog">
<h:form id="dashboard_filter_dialog_form">
<ui:repeat value="#{dashboardFilterDialogBean.dashboardObject.texts}" varStatus="loop">
<p:row>
<p:column>
<h:outputText value="Text" />
</p:column>
<p:column>
<p:inputText value="#{dashboardFilterDialogBean.dashboardObject.texts[loop.index]}" />
</p:column>
</p:row>
</ui:repeat>
</h:form>
<f:facet name="footer">
<h:form id="submit_dashboards_dialog_form">
<p:commandButton id="confirm_button" actionListener="#{dashboardFilterDialogBean.confirm()}" />
</h:form>
</f:facet>
</p:dialog>
豆子
public class DashboardFilterDialogBean {
private DashboardObject dashboardObject;
@PostConstruct
public void init() {
dashboardObject.getTexts().add("");
}
public void confirm() {
for (String txtValue : getDashboardObject().getTexts()) {
if (!txtValue.equals("")) {
...;
}
}
}
public DashboardObject getDashboardObject() {
return dashboardObject;
}
public void setDashboardObject(DashboardObject dashboardObject) {
this.dashboardObject = dashboardObject;
}
}
对象
public class DashboardObject {
private List<String> texts;
public DashboardObject() {
texts = new ArrayList<String>();
}
public List<String> getTexts() {
return texts;
}
public void setTexts(List<String> texts) {
this.texts = texts;
}
}
我已通过将 <p:ajax event="blur" process="@this" />
添加到我的 inputText 中解决了我的问题,因此它会在我单击确认之前保存该值。所以最后的代码看起来像这样:
<p:inputText value="#{dashboardFilterDialogBean.dashboardObject.texts[loop.index]}" />
<p:ajax event="blur" process="@this" />
</p:inputText>
在我的 xhtml 中,我定义了一个 inputText 变量,我想从中为列表中的特定字段设置特定值。每次我单击确认并调试我的代码时,该值都返回为“”(我在我的 init 函数中设置)。我还尝试将我的 inputText 值硬编码为 dashboardFilterDialogBean.dashboardObject.texts[0]
,就像我定义的列表中的唯一项目一样,但仍然没有结果。我的控制台出现 0 个异常
Xhtml
<p:dialog id="dashboardFilterDialog">
<h:form id="dashboard_filter_dialog_form">
<ui:repeat value="#{dashboardFilterDialogBean.dashboardObject.texts}" varStatus="loop">
<p:row>
<p:column>
<h:outputText value="Text" />
</p:column>
<p:column>
<p:inputText value="#{dashboardFilterDialogBean.dashboardObject.texts[loop.index]}" />
</p:column>
</p:row>
</ui:repeat>
</h:form>
<f:facet name="footer">
<h:form id="submit_dashboards_dialog_form">
<p:commandButton id="confirm_button" actionListener="#{dashboardFilterDialogBean.confirm()}" />
</h:form>
</f:facet>
</p:dialog>
豆子
public class DashboardFilterDialogBean {
private DashboardObject dashboardObject;
@PostConstruct
public void init() {
dashboardObject.getTexts().add("");
}
public void confirm() {
for (String txtValue : getDashboardObject().getTexts()) {
if (!txtValue.equals("")) {
...;
}
}
}
public DashboardObject getDashboardObject() {
return dashboardObject;
}
public void setDashboardObject(DashboardObject dashboardObject) {
this.dashboardObject = dashboardObject;
}
}
对象
public class DashboardObject {
private List<String> texts;
public DashboardObject() {
texts = new ArrayList<String>();
}
public List<String> getTexts() {
return texts;
}
public void setTexts(List<String> texts) {
this.texts = texts;
}
}
我已通过将 <p:ajax event="blur" process="@this" />
添加到我的 inputText 中解决了我的问题,因此它会在我单击确认之前保存该值。所以最后的代码看起来像这样:
<p:inputText value="#{dashboardFilterDialogBean.dashboardObject.texts[loop.index]}" />
<p:ajax event="blur" process="@this" />
</p:inputText>