当用户返回表单时,如何告诉Facelets页面应加载什么对象?
|
我遇到了一个问题,已经解决了,但是我觉得我的解决方案是一个糟糕的破解。有没有更好的办法?
我有一个页面,在该页面上放置了表单,该表单显示了某些对象的属性,例如示例(省略了明显的细节)。
Ticket.java:
@Entity
public class Ticket {
@Id
private Long id;
private String title;
private byte priority;
// Getters, setters...
}
TicketController.java
@RequestScoped
public class TicketController {
private Ticket ticket = new Ticket();
// Getters, setters...
public String doUpdateTicket() {
Ticket t = ticketEJB.getTicketById(ticket.getId());
t.setTitle(ticket.getTitle());
t.setPriority(ticket.getPriority());
ticketEJB.updateTicket(t);
ticket = t;
return \"view.faces\";
}
}
edit.xhtml(只是形式,其他所有都是样板)
<h:form>
<h:inputHidden value=\"#{ticketController.ticket.id}\" />
<h:panelGrid columns=\"2\">
<h:outputLabel value=\"ID\"/>
<h:outputLabel value=\"#{ticketController.ticket.id}\"/>
<h:outputLabel value=\"Title: \"/>
<h:inputText value=\"#{ticketController.ticket.title}\"/>
<h:outputLabel value=\"Priority: \"/>
<h:inputText value=\"#{ticketController.ticket.priority}\" />
<h:commandButton value=\"Submit\"
action=\"#{ticketController.doUpdateTicket}\" />
</h:panelGrid>
</h:form>
还有TicketEJB,它负责获取那些票证,持久化等等。
因此,我在表单中创建了一个隐藏的输入,然后(在托管bean中)使用提供的id查找票证,然后将托管bean的3个对象中的所有字段手动复制到获取的票证中,然后将其持久保存...违反了DRY原则(当我向Ticket添加字段时,我已经偶然发现了一个错误,但是忘记将其复制到doUpdateTicket()
中。
因此,也许有更好的方法可以做到这一点?
没有找到相关结果
已邀请:
2 个回复
襄挟款籍
唯一的区别是输入字段不会空白。但是,这不只是“编辑”表格背后的全部想法吗?然后,该问题也将立即以这种方式解决。 哦,你的
真的需要成为一个
哭木算