从所有对象列表中传递所选对象,每个对象都有自己的按钮

时间:2018-05-20 10:53:35

标签: jsf primefaces javabeans

我正在开发一个显示对象列表的网络应用程序,每个对象在模态内部单击时都有自己的模态,有两个下拉菜单和一个应该调用方法添加到bean中的按钮,执行操作并添加所选对象,同时获取三个值,选定对象,从两个下拉菜单和微调器值中选择两个项目。

//include your posts model.
use App\Post; 

Route::delete('/delete/{id}', function ($id){

    $post = Post::findOrFail($id);
    $post->delete();

});

我试过了:

<ui:repeat value="#{ViewTeacher.teacherList}" var="teacher"
varStatus="status">


<h:panelGroup layout="block" styleClass="name">
<p>#{teacher.name}</p>

</h:panelGroup>
<br />
<br />
<a onclick="viewModal(#{status.index})" class="btn btn-success">view</a>

<h:panelGroup id="modal" layout="block" class="modal"
style="max-width: 44em;" tabindex="1">
<h:panelGroup class="modal-content" layout="block">
<span class="close" onclick="modClose()">&times;</span>

<h:outputText styleClass="description" value="#{teacher.name}" />
<br />
<br />

<br />
students


<h:selectOneMenu value="ok" class="form-control">

<f:selectItems value="#{teacher.students}" var="s"
itemValue="#{s.id}" itemLabel="#{s.name}" />



</h:selectOneMenu>


classes

<h:selectOneMenu value="ok" class="form-control">
<f:selectItems value="#{teacher.classes}" var="c"
itemValue="#{c.id}" itemLabel="#{c.name}" />
</h:selectOneMenu>
<br />

<h:panelGroup layout="block" styleClass="form-group">


<p:spinner min="1" max="10" />

</h:panelGroup>

<h:commandButton id="submitButton" styleClass="btn btn-success" value="ADD">
<!—-this is the button that is supposed to take the values



</h:commandButton>

<a onclick="modClose()" class="btn btn-success">CANCEL</a>

</h:panelGroup>


</h:panelGroup>


</ui:repeat>

但param的名字会重复的事实会使它始终保持不变,并且可能被设置为检索到的最新对象,

任何建议?

更新:

<f:param name="name1" value="China" />

进行此更改以传递教师的ID,但它仍然在bean中为空

1 个答案:

答案 0 :(得分:0)

首先,为每个对象设置一个单独的模态并不是一个好主意。你可以通过以下方式实现(你正在尝试的):

1)。在bean中为选定对象添加属性(及其getter和setter)。

2)。将单个模态(<p:dialog id="modal"widgetVar="modal"属性)放在ui:repeat之外,以显示所选对象的数据。

3)。在单击视图链接上设置所选对象,使用以下命令更新和显示模态:

<p:commandLink styleClass="btn btn-success" process="@this" update="modal"
    onclick="PF('modal').show();">
    <h:outputText value="View" />
    <f:setPropertyActionListener
        value="#{teacher}" target="#{ViewTeacher.selectedTeacher}" />
</p:commandLink>

在这里,f:setPropertyActionListener将在bean中设置您选择的模态,因此它将在您的动作侦听器中可用。

更新:更改代码如下:

<ui:repeat value="#{ViewTeacher.teacherList}" var="teacher" varStatus="status">
    <h:panelGroup layout="block" styleClass="name">
        <p>#{teacher.name}</p>
    </h:panelGroup>

    <p:commandLink styleClass="btn btn-success" process="@this" update="modal"
        oncomplete="PF('modal').show();">
        <h:outputText value="view" />
        <f:setPropertyActionListener
            value="#{teacher}" target="#{ViewTeacher.selectedTeacher}" />
    </p:commandLink>
</ui:repeat>

<p:dialog id="modal" widgetVar="modal" header="Edit Teacher" modal="true"
    showEffect="fade" hideEffect="fade" resizable="false" closeOnEscape="true"
    styleClass="teachers-dialog">

    <h:outputText styleClass="description" value="#{ViewTeacher.selectedTeacher.name}" />
    <br />
    <br />
    <br />

    students
    <h:selectOneMenu value="#{ViewTeacher.selectedStudentId}" class="form-control">
        <f:selectItems value="#{ViewTeacher.selectedTeacher.students}"
            var="s" itemValue="#{s.id}" itemLabel="#{s.name}" />
    </h:selectOneMenu>

    classes
    <h:selectOneMenu value="#{ViewTeacher.selectedClassId}" class="form-control">
        <f:selectItems value="#{ViewTeacher.selectedTeacher.classes}"
            var="c" itemValue="#{c.id}" itemLabel="#{c.name}" />
    </h:selectOneMenu>
    <br />

    <h:panelGroup layout="block" styleClass="form-group">
        <p:spinner value="#{ViewTeacher.spinnerValue}" min="1" max="10" />
    </h:panelGroup>

    <h:commandButton id="submitButton" styleClass="btn btn-success" value="ADD">
    </h:commandButton>
</p:dialog>

selectedTeacherselectedStudentIdselectedClassIdspinnerValueViewTeacher bean的属性。