我知道它不推荐,我应该使用标签库等等。
但是我仍然想知道在JSP scriplet中声明方法是否合法:
<%
public String doSomething(String param) {
//
}
String test = doSomething("test");
%>
这合法吗?我得到一些似乎不适合的奇怪的编译错误(如a ; is expected
)。感谢。
答案 0 :(得分:50)
您需要使用声明语法(<%! ... %>
):
<%!
public String doSomething(String param) {
//
}
%>
<%
String test = doSomething("test");
%>
答案 1 :(得分:15)
了解jsp的工作:整个JSP由Tomcat转换为Java类。这个Java类只不过是Servlet。因此,最终将运行的是servlet。
现在考虑您正在编写一个Jsp代码,该代码打印方法中传递的2个nos的总和
<body>
<%!
public int add(int a,int b)
{
return a+b;
}
%>
<%
int k;
k=add(5,6);
%>
<%=
k
%>
</body>
因此,如果您要编写在servlet中打印出2个n的总和的相同代码,您可能会在doGet()方法中编写它。
原因为什么会出现错误的原因是您在另一个方法中定义了一个方法(违反了方法定义的规则)。
因此我们将该方法放在定义标记中,以便在形成新方法时