区分插入和更新



我有一个JSF页面,其中我有输入字段和值被保存到数据库。

我想做插入和更新。区分插入和更新的最佳方法是什么?我不喜欢使用标志。我的意思是,如果标志是"I",然后插入,否则标志是"U",然后更新。

最好像如果ID不为空,然后调用插入方法,否则ID为空,然后调用更新方法。ID是我的主键,它是自动生成的。

我使用的是JSF 1.1,数据库是Oracle 10g。

这不是jsf的典型问题,而是一个标准的设计问题。我曾见过以下处理方法:

  1. 获取id并调用select查询。如果查询返回任何结果,执行更新操作,否则执行插入操作。
  2. 更新并检查受影响的行。如果为0,则插入。或者,插入,然后检查主键异常。如果抛出异常,则更新。
  3. 如果数据库允许,使用集成的更新或插入。这可以在Oracle中使用merge关键字完成。
  4. 使用一个标志,但这是丑陋的
  5. 总是执行逻辑删除和插入。当然,这是一个更大的设计决策,并且在具有非常严格的审计需求的应用程序中实现。

既然你没有发布任何代码,也不是你的应用程序的描述对我有用的任何地方,我只能建议使用一个隐藏的表单字段,其中包含的标志,这是最终呈现使用h:inputHidden标签。当然,当回发发生时,没有什么可以阻止任何人将标志的值从U更改为I。毕竟,这是JSF 1.1,没有视图作用域的概念。

您可以使用会话作用域来存储值,而不是隐藏的表单字段,但是当您不再需要这些值时,您必须清除它们。

you can do  like this....

<h:commandButton value="Update" action="#{bean.updateAction}"
                                                         rendered="#{bean.ID eq ''}"/>
      <h:commandButton value="Add" action="#{bean.saveAction}" 
                                                         rendered="#{bean.ID ne ''}">
    where id is an attribute in your backing bean initiated with empty string.        

相关内容

  • 没有找到相关文章

最新更新