0

票务等级:

@Entity
@Table(name="tickets")
public class Ticket implements Serializable {


@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;

@Column(name="requester_name")
private String requesterName;

@ManyToOne
private BusinessPurpose business_purpose;


@ManyToOne
private Park park;

@Column(name="no_of_tickets")
private Integer noOfTickets;


@ManyToOne
private Status status; 


@ManyToOne
private User user;

这是 jsp 的一部分,我允许用户输入新票的详细信息。此 jsp 通过其中定义了所有字段的 ticketDTO 对象获取其数据。

function submitRegistration()
{
    var bpl = document.getElementById("bpl");
    document.forms['ticketRequestForm'].businessPurpose.value = bpl.options[bpl.selectedIndex].text;
    document.forms['ticketRequestForm'].park.value = document.forms['ticketRequestForm'].parkName.options[document.forms['ticketRequestForm'].parkName.selectedIndex].text;
    document.forms['ticketRequestForm'].stateName.value = document.forms['ticketRequestForm'].stateId.options[document.forms['ticketRequestForm'].stateId.selectedIndex].text;
    document.forms['ticketRequestForm'].countryName.value = document.forms['ticketRequestForm'].countryId.options[document.forms['ticketRequestForm'].countryId.selectedIndex].text;

    return isValid();
}

<s:form id="ticketRequestForm" method="post"
            action="submitTicket" theme="simple"
            onsubmit="return submitRegistration();">
            <s:hidden name="businessPurpose" />
            <s:hidden name="park" />

                    <td id="formtxt" width="20%">Requestor's Name</td>
                    <td valign="middle">
                        <p class="form">
                            <s:textfield name="requesterName">
                            </s:textfield>
                        </p>
                    </td>
                </tr>
                <tr>
                    <td id="formtxt" width="15%">Business Purpose</td>
                    <td valign="middle">
                        <p class="form">
                            <s:select id="bpl" list="businessPurposeList"
                                name="businessPurposeId" listKey="id"
                                listValue="businessPurposeName" onchange="businessList();"></s:select>
                        </p>
                    </td>
                </tr>

                    <td id="formtxt" width="15%">Which Park</td>
                    <td valign="middle">
                        <p class="form">
                            <s:select list="parkList" name="parkId" listKey="id"
                                listValue="name"></s:select>
                        </p>
                    </td>
                </tr>
            </table>
        </s:form>

PS:这是一个工作 jsp 的精简版本。请注意一些丢失的标签,因为我试图保持帖子简短。我的主要关注点是由对象内部的对象填充的列表。

现在我的第一个问题是-我可以以某种方式使用一个jsp进行保存和编辑操作吗?我可以在一个工单对象下获得完整的详细信息。

但是现在我已经实现了另一个jsp进行编辑。此 jsp 文件通过在操作类中填充的票证对象获取其值。

function submitRegistration()
{
    var bpl = document.getElementById("bpl");
    document.forms['ticketRequestForm'].businessPurpose.value = bpl.options[bpl.selectedIndex].text;
    document.forms['ticketRequestForm'].park.value = document.forms['ticketRequestForm'].parkName.options[document.forms['ticketRequestForm'].parkName.selectedIndex].text;
    document.forms['ticketRequestForm'].stateName.value = document.forms['ticketRequestForm'].stateId.options[document.forms['ticketRequestForm'].stateId.selectedIndex].text;
    document.forms['ticketRequestForm'].countryName.value = document.forms['ticketRequestForm'].countryId.options[document.forms['ticketRequestForm'].countryId.selectedIndex].text;

    return isValid();
}

<s:form id="ticketRequestForm" method="post"
            action="editTicket" theme="simple"
            onsubmit="return submitRegistration();">
            <s:hidden name="businessPurpose" />
            <s:hidden name="park" />
            <s:hidden name="stateName" />
            <s:hidden name="countryName" />

                <tr>
                    <td id="formtxt" width="20%">Requestor's Name</td>
                    <td valign="middle">
                        <p class="form">
                            <s:textfield name="%{ticket.requesterName}" value="%{ticket.requesterName}">
                            </s:textfield>
                        </p>
                    </td>
                </tr>
                <tr>
                    <td id="formtxt" width="15%">Business Purpose</td>
                    <td valign="middle">
                        <p class="form">
                            <s:select id="bpl" list="businessPurposeList"
                                name="%{ticket.businessPurpose.businessPurposeId}" listKey="id"
                                listValue="%{ticket.businessPurpose.businessPurposeName}" onchange="businessList();"></s:select>
                        </p>
                    </td>

                    <td id="formtxt">Country</td>
                    <td valign="middle">
                        <p class="form">
                            <s:select list="countriesList" name="ticket.country.countryId" listKey="id"
                                listValue="ticket.country.countryName"></s:select>
                        </p>
                        <p class="yellowLg">All fields are required.</p>
                        <p>
                            <s:submit name="Submit" title="Submit"></s:submit>
                        </p>

            </table>
        </s:form>

问题:我的问题是我无法在编辑页面中显示列表,这些列表实际上是我的主要对象中的对象。我希望这里的多对一关系对您来说很清楚。就像 BusinessPurpose 是通过休眠映射到表的 pojo 一样,Ticket 类将此对象映射为多对一。ParkStatus也是如此。我想要做的是获取所有公园和状态的列表并将其显示在 struts 标记中,然后获取要编辑的值。但是在编辑页面中,整个列表都填充了以前的值。如何在操作类中取回具有编辑/新值的票证对象?

如果您无法理解,请指出哪一部分不清楚。我将尝试详细说明。

4

1 回答 1

0

关于你的第一个问题

Now my first question here is - can i somehow use one jsp for both save 
and edit operations ?? I can get the complete details under one ticket object.

您最好使用不同的 JSP 来执行这两个任务。

My problem is that i am unable to display the lists inside the edit page which 
are actually objects inside my main object.

您能否将 JSP 代码粘贴到您尝试访问主对象内的对象的位置。

于 2013-03-27T06:46:32.273 回答