gpt4 book ai didi

javascript - 如何防止没有管理员访问权限的用户在 faces 中保存具有特定状态的表单

转载 作者:行者123 更新时间:2023-12-03 04:37:20 26 4
gpt4 key购买 nike

我试图阻止没有管理访问权限的用户保存选择了“完成”状态的表单(如果尚未选择)(例如,允许用户打开表单并编辑其数据,即使状态设置为完成,他们只是无法最初将其文档标记为完成)。

允许用户对“已完成”文档进行更改的原因是电子记录只是幕后工作流程的反射(reflect)。为了将项目标记为完成,必须完成其他几个过程。可以在事后对信息进行编辑,以解决转录或措辞错误。

我认为,如果用户尝试更改完成状态,则只需利用 onChange 事件重新选择先前的选择就足够了。我正在寻找一种优雅的方法来做到这一点,希望不要将先前的选择存储在页面上的单独字段中,因为它已经存储在其他地方。grantBacking.editGrant.statusCode 是表单的已保存/当前状态代码。此外,至少有三种不同的 Angular 色类型,包括只读访问权限、“添加”和“管理员”。阅读 - 不言自明,添加 - 可以对表单进行更改,但不能完成表单,管理员 - 可以进行更改并将表单状态标记为“完成”。

这是我到目前为止所拥有的:

<t:panelGroup>
<sec:authorize ifNotGranted="ADMINISTRATOR">

<h:selectOneMenu id="grantStatus" onchange="#checkGrantStatusPermissions(this,grantBacking.editGrant.statusCode)" onmouseover="Tip('#{msg_bundle.grant_status_help}')" value="#{grantBacking.editGrant.statusCode}">
<f:selectItems value="#{grantBacking.grantSelectStatusForNonAdmin}" />
</h:selectOneMenu>
</sec:authorize>

<sec:authorize ifAnyGranted="ADMINISTRATOR">

<h:selectOneMenu id="grantStatusForAdmin" onmouseover="Tip('#{msg_bundle.grant_status_help}')" value="#{grantBacking.editGrant.statusCode}">
<f:selectItems value="#{grantBacking.grantSelectStatus}" />
</h:selectOneMenu>
</sec:authorize>

<sec:authorize ifAnyGranted="ADD">
<a4j:commandLink id="qsave2" render="@all" onmouseover="Tip('Click to quick save')" action="#{grantBacking.saveGrant}">
<h:graphicImage title="Click this to quick save the grant/contract" style="border-style:none;" height="20px" width="15px" library="default" name="img/icons/disk.png" />
</a4j:commandLink>
</sec:authorize>

<script type="text/javascript">
function checkGrantStatusPermissions(field, originalValue){
if(originalValue.equalsIgnoreCase("complete")){
return
}
else{
document.getElementByID(field).value = originalValue.value;
}
}
</script>

最佳答案

在项目被标记为完成之前,您可以通过构建 selectItems 来禁用该选项,如下所示:

<f:selectItems value="#{grantBacking.grantSelectStatusForNonAdmin}" var="v"
itemDisabled="#{grantBacking.shouldDisableOption(v)}"/>

如果您的 EL 版本不包含传递参数的功能,您可以通过使用保存您的值、标签并具有 shouldDisable 的无参数方法的内部类来完成相同的任务。

在提交已完成的表单时,如果用户无法将其从“完成”更改为其他状态,则只需将 selectMenu 设置为只读即可。如果可以,那么在这种情况下您的 shouldDisable 逻辑应该返回 false。

这样做可以防止用户选择已知的错误值,并避免您编写用户不期望的编码行为,从而导致潜在的错误报告。

关于javascript - 如何防止没有管理员访问权限的用户在 faces 中保存具有特定状态的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43237746/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com