如何访问html内容中try-catch块内声明的变量



我是jsp、javaservlet等的新手。我遇到了一个问题,在中我有一个jsp页面,它在scriptlet中包含一个try-catch块。我在try-catch块中定义了一些变量,我需要在HTML中访问这些变量。由于它在try-catch块内,html页面无法访问这些变量及其成员变量。

<%
Logger logger = Logger.getLogger("abcd.jsp");
try{
UserProfile u = su.getUserProfile(session,request);
String rec_typestr = request.getParameter("rectype");;
int rectype = Integer.parseInt(rec_typestr);
....
....
//some more code
}
catch(NumberFormatException e) {
logger.error("Error in the request: " + e.getMessage());
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Invalid rectype passed in request");
return;
}
%>
<div id="testDiv1">
<div class="testClass1">
Private Views for <%=u.getFirstName() + " "%> <%=u.getLastName()%>
</div>
<div class="testClass2">
<input type="button" value="Create" class="genericButton" onclick="displayLink('openSomePage.jsp?rectype=<%=rectype%>')" /> 
<input type="button" value="Refresh" class="genericButton" onclick="perform1stTask()" /> 
<input type="button" value="Print" class="genericButton" onclick="perform2ndTask()" /> 
<input type="button" value="Export to Excel" class="genericButton" onclick="perform3rdTask(<%=u.getId()%>,'<%=someTestVariable%>', '<%=rec_typestr%>')" />
</div>
</div>

现在,变量urectype_strrectype如果在try外部声明,则可以由html页面访问,但我想在try中包含它们之后访问它们,因为其他一些验证对公共论坛是保密的。

由于如果捕捉到异常,则返回错误页面,并且不需要加载html内容,因此我希望有一个解决方案,仅当try块成功执行时才加载此html内容,而没有任何异常

如果我理解了您的需求,您可以按照以下方式进行:

<%
Logger logger = Logger.getLogger("abcd.jsp");
try{
UserProfile u = su.getUserProfile(session,request);
String rec_typestr = request.getParameter("rectype");;
int rectype = Integer.parseInt(rec_typestr);
....
....
//some more code
%>
<div id="testDiv1">
<div class="testClass1">
Private Views for <%=u.getFirstName() + " "%> <%=u.getLastName()%>
</div>
<div class="testClass2">
<input type="button" value="Create" class="genericButton" onclick="displayLink('openSomePage.jsp?rectype=<%=rectype%>')" /> 
<input type="button" value="Refresh" class="genericButton" onclick="perform1stTask()" /> 
<input type="button" value="Print" class="genericButton" onclick="perform2ndTask()" /> 
<input type="button" value="Export to Excel" class="genericButton" onclick="perform3rdTask(<%=u.getId()%>,'<%=someTestVariable%>', '<%=rec_typestr%>')" />
</div>
</div>
<%        
}
catch(NumberFormatException e) {
logger.error("Error in the request: " + e.getMessage());
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Invalid rectype passed in request");
return;
}
%>

最新更新