How to get value from h:outputText which is inside p:repeat element












0














I am trying to get values from the outputText component which is inside the repeat component:






<p:dataTable>
...
<p:column sortBy="#{row.trainnumber}" style="text-align: right; text-overflow: ellipsis; width: 80px" exportFunction="#{columnExporter.export}">
<f:facet name="header">
<h:outputText value="Zugnr." title="Zugnummer" />
</f:facet>

<p:repeat var="item" value="#{row.values}" varStatus="aendStatus">
<h:outputText value="#{item.trainnumber}" />
<h:outputText value="&lt;br /&gt;" escape="false" rendered="#{!someValue.last}" />
</p:repeat>
</p:column>
</p:dataTable>





For this, I'm using exportFunction. Below is an example code:






import java.util.List;
import java.util.Map;
import javax.enterprise.context.ApplicationScoped;
import javax.faces.component.UIComponent;
import javax.faces.component.ValueHolder;
import javax.faces.context.FacesContext;
import javax.inject.Named;
import org.apache.commons.lang3.StringUtils;
import org.primefaces.component.api.UIColumn;
import org.primefaces.component.repeat.UIRepeat;
import org.primefaces.util.ComponentUtils;

@Named
@ApplicationScoped
public class ColumnExporter {

public String export(final UIColumn column) {
String value = StringUtils.EMPTY;
for (final UIComponent child : column.getChildren())
value += buildValue(child);
return value;
}

private String buildValue(final UIComponent uiComponent) {
if (uiComponent.isRendered()) {
if (uiComponent instanceof ValueHolder) {
return ComponentUtils.getValueToRender(FacesContext.getCurrentInstance(), uiComponent);
} else if (uiComponent instanceof UIRepeat) {
UIRepeat repeat = (UIRepeat) uiComponent;
return buildRepeatValue(repeat);
} else if (uiComponent.getChildCount() > 0) {
String value = "";
for (UIComponent child : uiComponent.getChildren()) {
value += buildValue(child);
}
return value;
}
}
return "";
}

private String buildRepeatValue(UIRepeat repeat) {
String value = "";
String variableName = repeat.getVar();
String statusName = repeat.getVarStatus();
List<?> values = (List) repeat.getValueExpression("value")
.getValue(FacesContext.getCurrentInstance().getELContext());
for (Object valueObj : values) {
for (UIComponent child : repeat.getChildren()) {
String childValue = buildValue(child);
if (StringUtils.isNotEmpty(childValue)) {
value += childValue + "n";
}
}
}
return value;
}
}



But I always get the NULL value despite the fact that this value is correctly displayed in the table.
Does anyone know how to properly retrieve this value from the outputText element?








share|improve this question
























  • Tried not* using a p:datatable and a ui:repeat? Does it work then?
    – Kukeltje
    Nov 21 '18 at 18:42










  • Works without ui:repeat - I can get value from outputText
    – user3654104
    Nov 22 '18 at 7:58










  • With ui:repeat (instead of p:repeat)
    – Kukeltje
    Nov 22 '18 at 9:19










  • It does not change anything. I understand that the problem is that in ui:repeat component there really only exists one outputText element for many values. How do you get these values if you do not find in this item?
    – user3654104
    Nov 22 '18 at 21:12


















0














I am trying to get values from the outputText component which is inside the repeat component:






<p:dataTable>
...
<p:column sortBy="#{row.trainnumber}" style="text-align: right; text-overflow: ellipsis; width: 80px" exportFunction="#{columnExporter.export}">
<f:facet name="header">
<h:outputText value="Zugnr." title="Zugnummer" />
</f:facet>

<p:repeat var="item" value="#{row.values}" varStatus="aendStatus">
<h:outputText value="#{item.trainnumber}" />
<h:outputText value="&lt;br /&gt;" escape="false" rendered="#{!someValue.last}" />
</p:repeat>
</p:column>
</p:dataTable>





For this, I'm using exportFunction. Below is an example code:






import java.util.List;
import java.util.Map;
import javax.enterprise.context.ApplicationScoped;
import javax.faces.component.UIComponent;
import javax.faces.component.ValueHolder;
import javax.faces.context.FacesContext;
import javax.inject.Named;
import org.apache.commons.lang3.StringUtils;
import org.primefaces.component.api.UIColumn;
import org.primefaces.component.repeat.UIRepeat;
import org.primefaces.util.ComponentUtils;

@Named
@ApplicationScoped
public class ColumnExporter {

public String export(final UIColumn column) {
String value = StringUtils.EMPTY;
for (final UIComponent child : column.getChildren())
value += buildValue(child);
return value;
}

private String buildValue(final UIComponent uiComponent) {
if (uiComponent.isRendered()) {
if (uiComponent instanceof ValueHolder) {
return ComponentUtils.getValueToRender(FacesContext.getCurrentInstance(), uiComponent);
} else if (uiComponent instanceof UIRepeat) {
UIRepeat repeat = (UIRepeat) uiComponent;
return buildRepeatValue(repeat);
} else if (uiComponent.getChildCount() > 0) {
String value = "";
for (UIComponent child : uiComponent.getChildren()) {
value += buildValue(child);
}
return value;
}
}
return "";
}

private String buildRepeatValue(UIRepeat repeat) {
String value = "";
String variableName = repeat.getVar();
String statusName = repeat.getVarStatus();
List<?> values = (List) repeat.getValueExpression("value")
.getValue(FacesContext.getCurrentInstance().getELContext());
for (Object valueObj : values) {
for (UIComponent child : repeat.getChildren()) {
String childValue = buildValue(child);
if (StringUtils.isNotEmpty(childValue)) {
value += childValue + "n";
}
}
}
return value;
}
}



But I always get the NULL value despite the fact that this value is correctly displayed in the table.
Does anyone know how to properly retrieve this value from the outputText element?








share|improve this question
























  • Tried not* using a p:datatable and a ui:repeat? Does it work then?
    – Kukeltje
    Nov 21 '18 at 18:42










  • Works without ui:repeat - I can get value from outputText
    – user3654104
    Nov 22 '18 at 7:58










  • With ui:repeat (instead of p:repeat)
    – Kukeltje
    Nov 22 '18 at 9:19










  • It does not change anything. I understand that the problem is that in ui:repeat component there really only exists one outputText element for many values. How do you get these values if you do not find in this item?
    – user3654104
    Nov 22 '18 at 21:12
















0












0








0







I am trying to get values from the outputText component which is inside the repeat component:






<p:dataTable>
...
<p:column sortBy="#{row.trainnumber}" style="text-align: right; text-overflow: ellipsis; width: 80px" exportFunction="#{columnExporter.export}">
<f:facet name="header">
<h:outputText value="Zugnr." title="Zugnummer" />
</f:facet>

<p:repeat var="item" value="#{row.values}" varStatus="aendStatus">
<h:outputText value="#{item.trainnumber}" />
<h:outputText value="&lt;br /&gt;" escape="false" rendered="#{!someValue.last}" />
</p:repeat>
</p:column>
</p:dataTable>





For this, I'm using exportFunction. Below is an example code:






import java.util.List;
import java.util.Map;
import javax.enterprise.context.ApplicationScoped;
import javax.faces.component.UIComponent;
import javax.faces.component.ValueHolder;
import javax.faces.context.FacesContext;
import javax.inject.Named;
import org.apache.commons.lang3.StringUtils;
import org.primefaces.component.api.UIColumn;
import org.primefaces.component.repeat.UIRepeat;
import org.primefaces.util.ComponentUtils;

@Named
@ApplicationScoped
public class ColumnExporter {

public String export(final UIColumn column) {
String value = StringUtils.EMPTY;
for (final UIComponent child : column.getChildren())
value += buildValue(child);
return value;
}

private String buildValue(final UIComponent uiComponent) {
if (uiComponent.isRendered()) {
if (uiComponent instanceof ValueHolder) {
return ComponentUtils.getValueToRender(FacesContext.getCurrentInstance(), uiComponent);
} else if (uiComponent instanceof UIRepeat) {
UIRepeat repeat = (UIRepeat) uiComponent;
return buildRepeatValue(repeat);
} else if (uiComponent.getChildCount() > 0) {
String value = "";
for (UIComponent child : uiComponent.getChildren()) {
value += buildValue(child);
}
return value;
}
}
return "";
}

private String buildRepeatValue(UIRepeat repeat) {
String value = "";
String variableName = repeat.getVar();
String statusName = repeat.getVarStatus();
List<?> values = (List) repeat.getValueExpression("value")
.getValue(FacesContext.getCurrentInstance().getELContext());
for (Object valueObj : values) {
for (UIComponent child : repeat.getChildren()) {
String childValue = buildValue(child);
if (StringUtils.isNotEmpty(childValue)) {
value += childValue + "n";
}
}
}
return value;
}
}



But I always get the NULL value despite the fact that this value is correctly displayed in the table.
Does anyone know how to properly retrieve this value from the outputText element?








share|improve this question















I am trying to get values from the outputText component which is inside the repeat component:






<p:dataTable>
...
<p:column sortBy="#{row.trainnumber}" style="text-align: right; text-overflow: ellipsis; width: 80px" exportFunction="#{columnExporter.export}">
<f:facet name="header">
<h:outputText value="Zugnr." title="Zugnummer" />
</f:facet>

<p:repeat var="item" value="#{row.values}" varStatus="aendStatus">
<h:outputText value="#{item.trainnumber}" />
<h:outputText value="&lt;br /&gt;" escape="false" rendered="#{!someValue.last}" />
</p:repeat>
</p:column>
</p:dataTable>





For this, I'm using exportFunction. Below is an example code:






import java.util.List;
import java.util.Map;
import javax.enterprise.context.ApplicationScoped;
import javax.faces.component.UIComponent;
import javax.faces.component.ValueHolder;
import javax.faces.context.FacesContext;
import javax.inject.Named;
import org.apache.commons.lang3.StringUtils;
import org.primefaces.component.api.UIColumn;
import org.primefaces.component.repeat.UIRepeat;
import org.primefaces.util.ComponentUtils;

@Named
@ApplicationScoped
public class ColumnExporter {

public String export(final UIColumn column) {
String value = StringUtils.EMPTY;
for (final UIComponent child : column.getChildren())
value += buildValue(child);
return value;
}

private String buildValue(final UIComponent uiComponent) {
if (uiComponent.isRendered()) {
if (uiComponent instanceof ValueHolder) {
return ComponentUtils.getValueToRender(FacesContext.getCurrentInstance(), uiComponent);
} else if (uiComponent instanceof UIRepeat) {
UIRepeat repeat = (UIRepeat) uiComponent;
return buildRepeatValue(repeat);
} else if (uiComponent.getChildCount() > 0) {
String value = "";
for (UIComponent child : uiComponent.getChildren()) {
value += buildValue(child);
}
return value;
}
}
return "";
}

private String buildRepeatValue(UIRepeat repeat) {
String value = "";
String variableName = repeat.getVar();
String statusName = repeat.getVarStatus();
List<?> values = (List) repeat.getValueExpression("value")
.getValue(FacesContext.getCurrentInstance().getELContext());
for (Object valueObj : values) {
for (UIComponent child : repeat.getChildren()) {
String childValue = buildValue(child);
if (StringUtils.isNotEmpty(childValue)) {
value += childValue + "n";
}
}
}
return value;
}
}



But I always get the NULL value despite the fact that this value is correctly displayed in the table.
Does anyone know how to properly retrieve this value from the outputText element?




<p:dataTable>
...
<p:column sortBy="#{row.trainnumber}" style="text-align: right; text-overflow: ellipsis; width: 80px" exportFunction="#{columnExporter.export}">
<f:facet name="header">
<h:outputText value="Zugnr." title="Zugnummer" />
</f:facet>

<p:repeat var="item" value="#{row.values}" varStatus="aendStatus">
<h:outputText value="#{item.trainnumber}" />
<h:outputText value="&lt;br /&gt;" escape="false" rendered="#{!someValue.last}" />
</p:repeat>
</p:column>
</p:dataTable>





<p:dataTable>
...
<p:column sortBy="#{row.trainnumber}" style="text-align: right; text-overflow: ellipsis; width: 80px" exportFunction="#{columnExporter.export}">
<f:facet name="header">
<h:outputText value="Zugnr." title="Zugnummer" />
</f:facet>

<p:repeat var="item" value="#{row.values}" varStatus="aendStatus">
<h:outputText value="#{item.trainnumber}" />
<h:outputText value="&lt;br /&gt;" escape="false" rendered="#{!someValue.last}" />
</p:repeat>
</p:column>
</p:dataTable>






jsf primefaces






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 21 '18 at 18:41









Kukeltje

8,78441338




8,78441338










asked Nov 21 '18 at 13:59









user3654104user3654104

11




11












  • Tried not* using a p:datatable and a ui:repeat? Does it work then?
    – Kukeltje
    Nov 21 '18 at 18:42










  • Works without ui:repeat - I can get value from outputText
    – user3654104
    Nov 22 '18 at 7:58










  • With ui:repeat (instead of p:repeat)
    – Kukeltje
    Nov 22 '18 at 9:19










  • It does not change anything. I understand that the problem is that in ui:repeat component there really only exists one outputText element for many values. How do you get these values if you do not find in this item?
    – user3654104
    Nov 22 '18 at 21:12




















  • Tried not* using a p:datatable and a ui:repeat? Does it work then?
    – Kukeltje
    Nov 21 '18 at 18:42










  • Works without ui:repeat - I can get value from outputText
    – user3654104
    Nov 22 '18 at 7:58










  • With ui:repeat (instead of p:repeat)
    – Kukeltje
    Nov 22 '18 at 9:19










  • It does not change anything. I understand that the problem is that in ui:repeat component there really only exists one outputText element for many values. How do you get these values if you do not find in this item?
    – user3654104
    Nov 22 '18 at 21:12


















Tried not* using a p:datatable and a ui:repeat? Does it work then?
– Kukeltje
Nov 21 '18 at 18:42




Tried not* using a p:datatable and a ui:repeat? Does it work then?
– Kukeltje
Nov 21 '18 at 18:42












Works without ui:repeat - I can get value from outputText
– user3654104
Nov 22 '18 at 7:58




Works without ui:repeat - I can get value from outputText
– user3654104
Nov 22 '18 at 7:58












With ui:repeat (instead of p:repeat)
– Kukeltje
Nov 22 '18 at 9:19




With ui:repeat (instead of p:repeat)
– Kukeltje
Nov 22 '18 at 9:19












It does not change anything. I understand that the problem is that in ui:repeat component there really only exists one outputText element for many values. How do you get these values if you do not find in this item?
– user3654104
Nov 22 '18 at 21:12






It does not change anything. I understand that the problem is that in ui:repeat component there really only exists one outputText element for many values. How do you get these values if you do not find in this item?
– user3654104
Nov 22 '18 at 21:12














0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53413740%2fhow-to-get-value-from-houtputtext-which-is-inside-prepeat-element%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.





Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


Please pay close attention to the following guidance:


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53413740%2fhow-to-get-value-from-houtputtext-which-is-inside-prepeat-element%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Wiesbaden

Marschland

Dieringhausen