如何在JSP中的特定button的点击/提交事件时调用特定的Java方法?
我的Java文件是:
public class MyClass { public void method1() { // some code } public void method2() { //some code } public void method3() { //some code } }
在我的JSP页面中,我有三个HTMLbutton。
如果我点击button1
,那么只有method1
会被调用,如果我点击button2
那么只有method2
会执行,如果button3
,那么只有method3
,等等。
我怎样才能做到这一点?
只要给每个button元素一个独特的名字。 当按下时,button的名字可以像请求input元素一样用作请求参数。
您只需确保buttoninput的type="submit"
如<input type="submit">
和<button type="submit">
而不是 type="button"
,它只会呈现“死”button纯粹为了onclick
东西和所有。
例如
<form action="${pageContext.request.contextPath}/myservlet" method="post"> <input type="submit" name="button1" value="Button 1" /> <input type="submit" name="button2" value="Button 2" /> <input type="submit" name="button3" value="Button 3" /> </form>
同
@WebServlet("/myservlet") public class MyServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { MyClass myClass = new MyClass(); if (request.getParameter("button1") != null) { myClass.method1(); } else if (request.getParameter("button2") != null) { myClass.method2(); } else if (request.getParameter("button3") != null) { myClass.method3(); } else { // ??? } request.getRequestDispatcher("/WEB-INF/some-result.jsp").forward(request, response); } }
或者,使用<button type="submit">
而不是<input type="submit">
,那么你可以给它们所有相同的名字,但是一个唯一的值。 <button>
的值不会被用作标签,你可以将自己指定为child。
例如
<form action="${pageContext.request.contextPath}/myservlet" method="post"> <button type="submit" name="button" value="button1">Button 1</button> <button type="submit" name="button" value="button2">Button 2</button> <button type="submit" name="button" value="button3">Button 3</button> </form>
同
@WebServlet("/myservlet") public class MyServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { MyClass myClass = new MyClass(); String button = request.getParameter("button"); if ("button1".equals(button)) { myClass.method1(); } else if ("button2".equals(button)) { myClass.method2(); } else if ("button3".equals(button)) { myClass.method3(); } else { // ??? } request.getRequestDispatcher("/WEB-INF/some-result.jsp").forward(request, response); } }
也可以看看:
- Servlet返回“HTTP状态404请求的资源(/ servlet)不可用”
- 如何通过单击JSP页面中的超链接或button将当前项传递给Java方法?
<form method="post" action="servletName"> <input type="submit" id="btn1" name="btn1"/> <input type="submit" id="btn2" name="btn2"/> </form>
按下它的请求会去servlet页面上的servlet检查哪个button被按下,然后相应地调用所需要的方法作为objectName.method
您可以尝试在每个button上添加action =“#{yourBean.function1}”(当然也可以改变方法function2,function3或任何您需要的)。 如果这不起作用,你可以尝试onclick事件。
无论如何,如果您告诉我们您尝试使用哪种button,a4j:commandButton或您正在使用的任何button,将会更容易帮助您。