2 Stimmen

JSF - Zur Seite umleiten und Parameter-ID für die Suche speichern

Ich habe zwei Xhtml-Seiten und zwei verwaltete Beans.

Auf der ersten Seite habe ich eine Liste von Themen (Datensätze aus der Datenbanktabelle - die zweite Spalte enthält <h:commandLink> Tags):

enter image description here

Teil des reduzierten Codes:

<rich:column><h:outputText value="#{item.id}"/></rich:column>
<rich:column><h:outputText value="#{item.createdBy}"/></rich:column>
<rich:column>
  <h:commandLink value="#{item.topic}" action="#{myTools.setMenuItem('posts')}"/>
</rich:column>

Ich benutze action="#{myTools.setMenuItem('posts')}" auf die Seite posts.xhtml umzuleiten. Wie kann ich den Parameter "#{item.id}" um alle Beiträge zu einem Thema mit einer bestimmten ID zu finden?

UPDATE (mit DataModel): Das könnte der Weg sein:

<h:commandLink value="#{item.topic}" action="#{myTopic.submit}">

public String submit()
{
  topic = model.getRowData();
  return "/posts.xhtml?faces-redirect=true&id=" + topic.getId();
}

Aber ich weiß immer noch nicht, wie ich die topic.getId() Parameter an eine andere Bean (MyPosts) ?

4voto

BalusC Punkte 1034465

Passieren Sie es einfach auch.

z.B.

<h:commandLink value="#{item.topic}" action="#{myTools.navigate('posts', item.id)}"/>

mit

public String navigate(String menuItem, Long id) {
    this.menuItem = menuItem;
    return menuItem + "?faces-redirect=true&id=" + id;
}

Die Bean muss und sollte sich nicht im Sitzungsbereich befinden. Der View-Bereich ist in Ordnung. Andernfalls wird der Endbenutzer mit einem unintuitiven Verhalten konfrontiert, wenn er mit derselben Seite in mehreren Browser-Tabs/Fenstern interagiert.

2voto

kgautron Punkte 7528

Sie können verwenden:

<f:setPropertyActionListener target="#{propertyToSet}" value="#{item.id}" />

innerhalb Ihres commandLink.

1voto

medopal Punkte 9494

Sie können ein verborgenes Feld hinzufügen und die ID vor dem Absenden in diesem Feld speichern (verwenden Sie onclick in Javascript) und binden Sie dieses versteckte Feld an eine Variable innerhalb der Bean.

<h:inputHidden id="selectedId" value="#{beakbean.selectedId}">

<h:commandLink value="#{item.topic}" onclick="updateSelectedId()" action="#{myTools.setMenuItem('posts')}"/>

function updateSelectedId(){
    //put the selected id in the field selectedId
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X