【问题标题】:How to refresh the content of a JSP?如何刷新 JSP 的内容?
【发布时间】:2014-05-28 05:51:06
【问题描述】:

我有一个 jsp 页面,单击按钮时我想从 bean 中获取值并根据该数据执行一些操作。

(此按钮不会发布或获取任何内容,只会更改一些 UI 级别。)

条件: 页面不能刷新,只有页面的某个部分被刷新,并且只有在按下那个按钮时才会刷新。

我有

 <wcbase:useBean id="beanUtil" classname="UtilBean">
        <c:set property="studentId" value="${WCParam.studentId}" target="${beanUtil}" />
        </wcbase:useBean>
            <c:set property="classId" value="${class.uniqueID}" target="${beanUtil}" />
            <c:set var="listOfStudents" value="${beanUtil.StudentIdsforTransfer}" />
                                
            <c:if test="${not empty listOfStudents}">
                <script>var listOfStudents= true; </script>
            </c:if>
            <c:if test="${empty listOfStudents}">
                <script>var listOfStudents = false;</script>
                </c:if>

我需要通过单击按钮来调用整个部分

怎么做?

我们将不胜感激。

注意:我曾尝试将此代码放在 div 中,然后尝试在单击按钮时刷新该 div,但它不起作用。

类似:

放入js

  $('#studentDiv').load(document.URL +  '#studentDiv');

放入jsp。

 <div id="studentDiv">

 <wcbase:useBean id="beanUtil" classname="UtilBean">
        <c:set property="studentId" value="${WCParam.studentId}" target="${beanUtil}" />
        </wcbase:useBean>
            <c:set property="classId" value="${class.uniqueID}" target="${beanUtil}" />
            <c:set var="listOfStudents" value="${beanUtil.StudentIdsforTransfer}" />
                                
            <c:if test="${not empty listOfStudents}">
                <script>var listOfStudents= true; </script>
            </c:if>
            <c:if test="${empty listOfStudents}">
                <script>var listOfStudents = false;</script>
                </c:if>
</div>

此代码刷新了页面,但在主页面中再次插入了整个页面并保持在进程中。

【问题讨论】:

  • 您不能(使用 JSP)正如 JohnRose 所说,应该使用 ajax 来完成,您必须向服务器发送异步请求以获取数据(例如 json)并手动修改 html .

标签: javascript jquery ajax jsp jakarta-ee


【解决方案1】:

可以借助以下语句刷新JSP页面

TimeUnit.SECONDS.sleep(5); 

它会在 5 秒后重新加载页面..您可以根据需要更改它

我在我的代码中使用了上面的行如下..看看..它可能对你有帮助

  <form action="haryana.jsp" method="get" class="values">
            <table cellspacing="4" cellpadding="4">
                <tr>
                    <td>Select Industry</td>
                    <td><select name="sta" class="dropdown">
                            <option>Industry</option>
                            <option>Cotton</option>
                            <option>Sugar</option>
                            </select></td>
                </tr>
                <tr>
                    <td>Select Category </td>
                    <td><select name="ind" class="dropdown">
                            <option>Category</option>
                            <option>Area</option>
                            <option>Production</option>
                            <option>Yield</option>
                        </select></td>
                </tr>
                <tr class="blank_row">

                </tr>
                <tr>
                    <td><input type="submit" value="Submit" style="margin-top: 10px;" name="bt" class="btn btn-primary btn1"/></td>
                </tr>
            </table>
            <%
                if (request.getParameter("bt") != null) 
                {
                    categoryDataset = new DefaultCategoryDataset();
                    try 
                    {
                        st=request.getParameter("sta").toLowerCase();
                        indus = request.getParameter("ind").toLowerCase();
                        String qry = "select year,"+indus+" from "+st+" where year between '2007-08' and '2013-14'  and state='Haryana'";
                        utility ut = new utility();
                        ResultSet rs = ut.DQL(qry);
                        while (rs.next()) 
                        {
                            a=Float.parseFloat(rs.getString(""+indus));
                            b=Math.round(a);
                            categoryDataset.setValue(b, "" + st, "" + rs.getString("year"));
                            data1.setValue("" + rs.getString("year"), b);
                        }
                        JFreeChart chart1 = ChartFactory.createPieChart(""+indus,   data1, true, true, false);
final ChartRenderingInfo info1 = new ChartRenderingInfo(new StandardEntityCollection());
                        final File file2 = new File("F:/JavaAptech/Netbeans 74 applications/MinorProj/web/" + "har1" + st + indus + ".png");
                        img1 = "har1" + st + indus + ".png";
                        ChartUtilities.saveChartAsPNG(file2, chart1, 450, 300, info1);
                        chart1.setBorderVisible(true);
                    } 
                    catch (Exception e) 
                    {
                       // out.println(e);
                        %>
                        <script>
                            alert("Invalid Input/Data Unavailable");
                        </script>
                        <%
                    }%>
        </form>
    </div>
  <div style="float:left;width:70%;height:380px;">
     <%TimeUnit.SECONDS.sleep(5); %>
     <img style="margin-left: 15px;margin-top:3px;width:450px;height: 350px;"  src=     <%=img1%> USEMAP="#chart1"/>

</div>
    <%
         }
    %>

【讨论】:

  • 我在帖子中提到“页面不能刷新”
  • 它不会刷新整个页面..你可以将它放在你想要刷新的 div 标签内,它只会刷新那部分而不是整个页面..尝试使用它,你会明白什么我想说
  • 其实我明白你在说什么,但除非执行某些操作,否则也不能刷新 div。
  • 您的 div 标签是在点击按钮后显示还是在页面加载时已经在页面上显示?
  • 当你不需要加载整个页面时调用ajax
【解决方案2】:

我的建议是 调用 ajax 来刷新你的内容。 在“test.html”中编写代码以从您的 bean 中获取值。 示例代码

$.ajax({
  url: "test.html",
  context: document.body
}).done(function() {
  $( this ).addClass( "done" );
});

我给参考

Calling a backingBean method from javascript

how to call backing bean method from java script

How to call managed bean methods with parameters via JavaScript

Calling Managed Bean Method From JavaScript

【讨论】:

  • 能否请您告诉我如何在 javaScript/jQuery 中调用 bean 的方法?
猜你喜欢
  • 1970-01-01
  • 2015-02-06
  • 2015-05-01
  • 1970-01-01
  • 2019-02-05
  • 2016-02-21
  • 2018-03-27
  • 1970-01-01
  • 2011-06-21
相关资源
最近更新 更多