票务等级:
@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 类将此对象映射为多对一。Park和Status也是如此。我想要做的是获取所有公园和状态的列表并将其显示在 struts 标记中,然后获取要编辑的值。但是在编辑页面中,整个列表都填充了以前的值。如何在操作类中取回具有编辑/新值的票证对象?
如果您无法理解,请指出哪一部分不清楚。我将尝试详细说明。