【问题标题】:execute an action and request a signature if needed执行操作并在需要时请求签名
【发布时间】:2011-10-12 12:13:49
【问题描述】:

我正在尝试开发一个组件,其中需要用户签名才能完成某个操作,这里的顺序是:

  1. 用户单击命令按钮或命令链接。
  2. 会打开一个弹出窗口,要求用户输入用户名/密码
  3. 如果用户输入正确的用户名/密码,则执行原始操作。
  4. 如果用户输入错误的用户名/密码或单击取消按钮,则不会发生任何事情。
  5. 最后,当动作真正执行时,签名信息应该是可用的。

注意:解决方案应该是一个复合组件,应该具有以下结构:

<myCC:confirm action="#{testMB.delete}" singatureType="deleteObject"/>

我为实现此行为所做的是:

  1. 创建了一个视图范围的托管 beanSignatureMB 来处理带有属性(用户名、密码和签名类型)的签名

  2. 创建了一个请求范围的托管 bean #{testMB},其托管属性映射到 #{signatureMB}

  3. 在我的复合组件 myCC:confirm 我创建了两个链接,一个 outputLink 将打开带有签名表单的弹出窗口,第二个是隐藏的 commandLink,它将包含要提交的实际操作即 #{testMB.delete}

  4. 签名表单已发布,如果用户名/密码正确,弹出窗口将自行关闭并触发隐藏 commandLink 的点击事件。

  5. 最后在 #{testMB.delete} 我将获得签名信息,并能够处理信息,完成后我将重置 signatureMB 中的值

您如何看待这个实现?你认为有更好的方法吗?

【问题讨论】:

    标签: java jsf jsf-2 composite-component


    【解决方案1】:

    这是一个合理的实现,也是一个很好的起点。

    您将需要额外的步骤 4a 来处理不正确的用户名/密码逻辑

    【讨论】:

      【解决方案2】:

      隐藏的链接部分是“松散的链接:-)” 成功验证后,您可以自动调用删除,用户真的需要再次单击删除吗?链接也可以动态呈现吗?

      【讨论】:

      • 自动调用删除是什么意思?现在我通过触发隐藏commandLink的onclick事件来做到这一点。我没有提到用户必须再次单击删除!最后应该动态呈现什么链接?你能说得清楚一点吗?
      • 我的疏忽假设“用户不得不再次调用删除”我收回了这一点。这也是建议“删除链接”必须动态呈现的原因。我希望删除函数可以从服务器端调用,而不是从客户端调用。
      • 它是一个复合组件,将在整个项目中重复使用,在我的示例中它是一个删除操作,但它可以是其他任何操作。
      猜你喜欢
      • 1970-01-01
      • 2014-10-25
      • 1970-01-01
      • 2021-11-17
      • 1970-01-01
      • 2013-04-29
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      相关资源
      最近更新 更多