我正在尝试将Java String作为JavaScript函数的参数传递。是的我知道Java和JavaScript不一样,但我在.jsp中使用scriplets。
我需要一种方法来访问JavaScript函数中动态创建的java Scriplet对象(componentTypePK)。我认为最好的方法是将Java Scriplet对象传递给JavaScript函数,但是我收到了下面描述的错误。
这是我的JavaScript功能:
<script LANGUAGE="JavaScript">
function showFormsInUse(componentTypePk){
window.open('/showFormsInUse.do?<%="documentTypePk="+request.getParameter("documentTypePk")+"programAreaPk="+request.getParameter("programAreaPk")+"ComponentTypePK="+componentTypePk');
}
</script>
这里我将JavaScript函数称为传递Java String作为参数。
<% if(getOppList(context,componentType.getString("ComponentDef_pk")).length()>1){%>
<TD CLASS="ListCode">
<IMG onclick="showFormsInUse(<%=componentType.getString("ComponentDef_pk")%>)" SRC="images/check.gif" TITLE="<%=getOppList(context,componentType.getString("ComponentDef_pk"))%>" WIDTH="16" HEIGHT="15" BORDER="0">
</TD>
<% }else{%>
<TD CLASS="ListCode">
<IMG SRC="images/check.gif" TITLE="<%=getOppList(context,componentType.getString("ComponentDef_pk"))%>" WIDTH="16" HEIGHT="15" BORDER="0">
</TD>
<%}%>
我不希望在我的脚本之前初始化Java字符串,然后将该String传递给Javascript变量this。我也知道Java Scriplets are bad form,所以我很想知道我是否可以使用JSTL解决问题。
更新:当我尝试运行并编译此代码时,我得到以下内容:
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 77 in the jsp file: /documentForms.jsp
Invalid character constant
74:
75: <script LANGUAGE="JavaScript">
76: function showFormsInUse(componentTypePk){
77: window.open('/showFormsInUse.do?<%="documentTypePk="+request.getParameter("documentTypePk")+"programAreaPk="+request.getParameter("programAreaPk")+"ComponentTypePK="+componentTypePk');
78: }
79: </script>
总结一下,有没有办法将Java Object传递给JavaScript函数?
答案 0 :(得分:1)
在第77行你打开了一个scriplet标签,但是我看到了相同的结束标签。
'/showFormsInUse.do?<%="documentTypePk="+request.getParameter("documentTypePk")+"programAreaPk="+request.getParameter("programAreaPk")+"ComponentTypePK= %>"+componentTypePk'
我还建议你把所有的scriplet标签保存在jsp中,并有一个干净的js代码。
<% if(getOppList(context,componentType.getString("ComponentDef_pk")).length()>1){%>
<TD CLASS="ListCode">
<IMG onclick="showFormsInUse(<%=request.getParameter("documentTypePk")%>,<%=request.getParameter("programAreaPk")%>,<%=componentType.getString("ComponentDef_pk")%>)" SRC="images/check.gif" TITLE="<%=getOppList(context,componentType.getString("ComponentDef_pk"))%>" WIDTH="16" HEIGHT="15" BORDER="0">
</TD>
的js
<script LANGUAGE="JavaScript">
function showFormsInUse(documentTypePk,programAreaPk,componentTypePk){
window.open('/showFormsInUse.do?documentTypePk='+documentTypePk+'programAreaPk='+programAreaPk+'ComponentTypePK='+componentTypePk);
}