【弹窗提示】在使用JSF的页面进行提交时显示确认弹窗


1. 先看一下最终效果图:

当点击按钮提交时:
在这里插入图片描述
当点击取消时:
在这里插入图片描述

2. 问题描述

JSF的页面提交表单有两种方式
- 使用<h:commandButton/>
- 使用<h:commandLink/>

现在想在点击按钮或者链接时,先弹出一个提示弹窗,只有当点击确认后才进行提交表单的操作


之前在用servlet或者ssm 、spring boot时,可以在一个自定义的函数中完成表单的提交,比如

// 其他业务逻辑
f.action = "后端url";
f.submt();

但是现在不能使用这种方式,因为JSF向后端发请求的方式不太一样(我目前是这么理解的)
JSF会把DOM组件的属性进行一些修改,加上一些自己的东西,比如这个input的name属性

<input type="submit" name="j_idt6:j_idt7:0:j_idt37" value="选课"/>

除此以外他的请求url规则不太懂,因为他的form的action是这样子的:

<form id="j_idt4" name="j_idt4" method="post" action="/student_select_course_war_exploded/pages/login.xhtml" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="j_idt4" value="j_idt4">

        学号:<input type="text" name="j_idt4:j_idt6" value="12019">
        密码<input type="password" name="j_idt4:j_idt8" value=""><input type="submit" name="j_idt4:j_idt9" value="登录"><input type="hidden" name="javax.faces.ViewState" id="j_id1:javax.faces.ViewState:0" value="5828257949642758969:1121197389987952612" autocomplete="off">
</form>

也就是说:他指向的是当前页面


3. 问题解决

进过一波分析感觉不能对<h:commandButton/>下手,应该另辟蹊径

于是乎,我在这个按钮旁边又添加了一个普通按钮,当我点击这个按钮的时候,他会出发一个自定义的js函数,在这个函数里进行弹窗提示,并进行表单提交

<h:commandButton action="#{cour.selectCourse(cour.id, student.id)}" style="display: none"/>
<button type="button" class="btn btn-primary btn-sm demo3" onclick="selectCourse(this)">选课</button>

弹窗函数如下:

function selectCourse(btn) {
    swal({
        title: "选课确认",
        text: "是否确认选择当前课程?\n如想修改选课信息,请前往查看已选课程页面",
        type: "warning",
        showCancelButton: true,
        confirmButtonColor: "#1ab394",
        confirmButtonText: "确认选课",
        cancelButtonText: "取消选课",
        closeOnCancel: false,
        closeOnConfirm: true
    }, function (isConfirm) {
        if (isConfirm) {
            $(btn).prev().click()
        } else {
            swal("已取消", "您取消了删除操作!", "error");
        }
    });
}

代码说明:
$(btn).prev().click()表示获取当前元素的前一个兄弟元素

需要添加的js和css库文件

    <link href="css/plugins/sweetalert/sweetalert.css" rel="stylesheet"/>
    <link href="css/animate.css" rel="stylesheet"/>
    <link href="css/style.css?v=4.1.0" rel="stylesheet"/>
  
    <script type="text/javascript" src="js/jquery.min.js"></script>
    <script type="text/javascript" src="js/bootstrap.min.js"></script>
    <script type="text/javascript" src="js/exist-other-course.js"></script>
    <script type="text/javascript" src="js/plugins/sweetalert/sweetalert.min.js"></script>
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别来BUG求求了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值