Я делаю кнопку, которая добавляет пустые элементы в список, затем эти элементы отображаются помимо одного объекта (основного) того же типа (адрес), который отображается всегда.Я использую с параметром, который сам по себе работает нормально, пока я не использую только один с данным именем параметра.Если я добавляю оба компонента (основной адрес и дополнительный адрес), я получаю PropertyNotFoundException.
Я могу понять, почему у меня не может быть двух параметров с одинаковым именем, но какой обходной путь для этого?
<ui:include src="address.xhtml">
<ui:param name="addressParam" value="#{bean.primaryAddress}"/>
</ui:include>
<p:commandButton icon="pi pi-plus">
<p:ajax event="click" listener="#{bean.addAdditionalAddress()}" update="wrapper"/>
</p:commandButton>
<p:outputPanel id="wrapper">
<p:repeat value="#{bean.additionalAddresses}" var="varAddress">
<ui:include src="address.xhtml">
<ui:param name="addressParam" value="#{varAddress}"/>
</ui:include>
</p:repeat>
</p:outputPanel>
address.xhtml:
<p:inputText value="#{addressParam.pickupAddres}" label="Pickup address"/>
Отображается новый элемент address.xhtml, но также появляется исключение.Исключение:
javax.el.PropertyNotFoundException: Target Unreachable, identifier [addressParam] resolved to null
at org.apache.el.parser.AstValue.getTarget(AstValue.java:74) ~[tomcat-embed-el-9.0.16.jar:9.0.16]
at org.apache.el.parser.AstValue.getType(AstValue.java:58) ~[tomcat-embed-el-9.0.16.jar:9.0.16]
at org.apache.el.ValueExpressionImpl.getType(ValueExpressionImpl.java:174) ~[tomcat-embed-el-9.0.16.jar:9.0.16]
at org.apache.myfaces.view.facelets.el.ContextAwareTagValueExpression.getType(ContextAwareTagValueExpression.java:75) ~[myfaces-impl-2.2.12.jar:2.2.12]
at org.primefaces.util.ComponentUtils.getConverter(ComponentUtils.java:164) ~[primefaces-7.0.jar:7.0]
...
(Да, я понимаю, что могу просто пойти с bean.addresses и считать первый элемент списка «primaryAddress» или флаг и т. Д.)
СпасибоВы!
Редактировать: замена <ui:repeat>
на <c:foreach>
все еще вызывает исключение