【问题标题】:How to access variables declared inside try-catch block in html content?如何访问在 html 内容中的 try-catch 块中声明的变量?
【发布时间】:2021-01-08 10:22:18
【问题描述】:

我是 jsp、java servlet 等的新手。我遇到了一个问题,我有一个 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 页面访问,但我想在包含后访问它们由于其他一些对公共论坛保密的验证,他们正在尝试中。

由于如果捕获到异常则返回错误页面并且不需要加载html内容,我想要一个解决方案,仅在try块成功执行且没有任何异常的情况下加载此html内容。

【问题讨论】:

    标签: java jsp scope scriptlet


    【解决方案1】:

    如果我理解了你的要求,你可以这样做:

    <%
        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;
        }
    %>
    

    【讨论】:

      猜你喜欢
      • 2014-06-23
      • 1970-01-01
      • 2015-01-26
      • 2013-02-08
      • 1970-01-01
      • 2015-03-31
      • 2017-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多