java – 在JSF中实现项目版本页面
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 在JSF中实现项目版本页面,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1909字,纯文字阅读大概需要3分钟。
内容图文
![java – 在JSF中实现项目版本页面](/upload/InfoBanner/zyjiaocheng/742/7bd3efc5cbfa4157a4537e22b7c462f1.jpg)
我正在创建一个JSF应用程序.我有一些来自数据库的项目(例如产品),我想创建一个用于编辑特定项目的JSF页面,即:
>它应显示所选的项目属性并允许用户编辑它们,
>我希望能够通过一些链接查看此项目,
>我希望JSF以某种方式记住我正在编辑特定项目(例如,在编辑其数据后,它应显示此项目页面)
我在存储/传递正在编辑的项目的ID时遇到问题.我在示例JSF CarDemo应用程序中看到它们存储正在会话中查看的项目(汽车).我不想这样做,因为我希望用户能够在单独的浏览器选项卡中编辑不同的元素.
我尝试了几种方法:
>在URL中使用一些(例如itemId)GET参数,但是在编辑数据后很难返回项目页面(faces-config.xml中的to-view-id字段只能包含常量),
>使用一些支持bean托管属性并在每个超链接和表单中传递其值(通过添加隐藏字段)
我仍然无法消除的问题是,如果在编辑了一些项目属性后我尝试保存它们并且验证(例如f:validateLength)失败,页面将被重新加载,但正在编辑的项目的ID将丢失.我认为在创建Web应用程序(例如用户版,商店产品版)时这是非常标准的任务,因此肯定应该有一些解决方案.
提前致谢.
解决方法:
Tomahawk的t:saveState完全符合您的要求.只需在您的页面中添加类似内容:
<t:saveState value="#{bean.item.id}" />
或者如果您想要涵盖所有“未覆盖”项目值:
<t:saveState value="#{bean.item}" />
如果您不想出于某些未知原因添加其他组件库(我确实建议使用Tomahawk,它会在标准JSF实现之上添加更多灵活组件,例如t:dataList,t:dataTable preserveDataModel =“true”,t: selectOneRadio layout =“spread”,t:inputFileUpload,etcetera),那么你也可以使用标准< h:inputHidden>用于将隐藏参数从请求传递到请求的组件(它呈现< input type =“hidden”>).需要注意的是,在验证阶段失败时,您仍然会丢失值.但是这可以通过使用组件绑定而不是值来实现.
private HtmlInputHidden itemId = new HtmlInputHidden();
private Item item = new Item();
public void editItem() { // Action method when selecting an item for edit.
itemId.setValue(item.getId());
}
public void saveItem() { // Action method when saving edited item.
item.setId((Integer) itemId.getValue());
}
并在JSF页面中具有以下相同的形式:
<h:inputHidden binding="#{bean.itemId}" />
希望这可以帮助.
内容总结
以上是互联网集市为您收集整理的java – 在JSF中实现项目版本页面全部内容,希望文章能够帮你解决java – 在JSF中实现项目版本页面所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。