String string = "today is a (happy) day, I would like to (explore) more about Java.";
string = string.replaceAll("\\(happy\\)", "good");
string = string.replaceAll("\\(explore\\)", "learn");
System.out.println(string);`
我正在从html调用函数
<%!
public void runJavaMethod(int id)
{
%>
<%
try{
String icd = request.getParameter("icd");
String inm = request.getParameter("inm");
String istk = request.getParameter("istock");
String sstk = request.getParameter("sstock");
String upr = request.getParameter("uprice");
String spr = request.getParameter("sprice");
r = s.executeQuery("select * from itemsyncdata");
while(r.next())
{
s.executeUpdate("update itemsyncdata set itemcode='"+icd+"',itemname='"+inm+"',instock='"+istk+"',storestock='"+sstk+"',unitprice='"+upr+"',storeprice='"+spr+"' where id='"+a+"'");
}
}
catch(Exception e)
{
e.printStackTrace();
}
%>
<%!} %>
所以我们想要runJavaMethod参数。
答案 0 :(得分:1)
onclick="<%runJavaMethod(r.getInt(1));%>"/>
HTML / Javascript 在客户端播放, JSP / Java 在服务器端播放。
只是你不能。您可能会误解JSP和HTML/JavaScript
存在于同一文档中。是的,但是服务器端的JSP部分编译本身就是客户端。
你可以做的是你必须提出服务器请求。最有可能看看Ajax请求。
答案 1 :(得分:1)
您正在尝试将两种语言混合即Java和Javascript / html,即onclick
是一个Javascript事件,您无法调用runJavaMethod
来自Javascript。
简单来说,您不能使用Javascript直接调用Java方法(存在于scriptlet中),因为从服务器加载时,所有JSP代码都会产生(变成)html 。
因此,如果你必须解决问题,在onclick
之后,你需要调用服务器上的servlet / controller方法的URL来完成这项工作(即,执行业务逻辑。)
另一个重要的一点是 Scriptlet是遗留代码,我强烈建议不要使用它们来生成或管理html内容,而是使用JSTL以便在之间实现明确的分离关注点(即业务逻辑和用户界面要求)。
另外,我强烈建议您阅读here中的JSP最佳实践并遵循它们。
答案 2 :(得分:1)
你正在混合两种不同的东西。 JSP是服务器端代码,它呈现的响应是发送回浏览器的HTML。在您的情况下,JavaScript是纯客户端。
如果你真的想要调用服务器端处理,而不是使用Ajax调用创建一个简单的Java脚本函数,并获得可以使用它的响应。
我建议在后端类中发送JSP的所有逻辑不是放在jsp中的好习惯。 JSP非常适合用户界面设计。