Передача объекта из p: dataTable в Controller на rowSelect в JSF - PullRequest
0 голосов
/ 16 января 2020

Я пытаюсь передать объект из таблицы элементов в Controller. Затем я использую JS оповещение для подтверждения успеха. Однако я ничего не могу передать из таблицы.

Любая помощь будет оценена.

Issues.x html

<p:dataTable var="issue" value="#{issuesController.findWithParameter(issues, startenddates)}" styleClass="list" selectionMode="single" selection="#{issuesController.issue}" rowKey="#{issue.id}" >
    <p:ajax event="rowSelect" update="mainForm" listener ="#{issuesController.onRowSelect}" 
            oncomplete="alert(args.name)"/>  

    <p:column headerText="Id"  id = "head_id" style="width:0%; padding: 0px;">
        <h:outputText value="#{issue.id}"/>
    </p:column>
    <p:column headerText="Child" id = "head_child" style="width:12%;">
        <h:outputText value="#{issue.child}"/>
    </p:column>
...
</p:dataTable>

IssuesController. java

@Named("issuesController")
@RequestScoped
public class IssuesController implements Serializable {

    @Inject
    private Issues issue;
....
public void onRowSelect(SelectEvent event) throws IOException {
        Issues i = (Issues) event.getObject();
        String toWrite;
        if (i == null) {
            toWrite = "Item is not recieved";
        } else {
            toWrite = i.toString();
        }
        RequestContext.getCurrentInstance().addCallbackParam("name", toWrite);
}

Проблемы. java

@Named("issues")
@SessionScoped
@XmlRootElement
public class Issues implements Serializable {
....
}

Я пробовал разные типы областей, пробовал f: attribute ... ни то, ни другое не сработало ...

1 Ответ

0 голосов
/ 05 февраля 2020

Попробуйте использовать process="@this" и измените область действия на @ViewScoped.

...