为什么JSTL中的JS / JQuery函数不起作用?

时间:2016-03-20 13:47:55

标签: javascript jquery jsp spring-mvc jstl

在我的JSP中,我根据JSTL的值调用JSP函数。我看到JS(在JSTL内部)里面的alert语句工作,但不是JQuery。那是为什么?

<c:set var = "error" value="${SPRING_SECURITY_LAST_EXCEPTION.message}"/>
<c:choose>                  

    <c:when test="${error=='not unregistered'}"> 
            <script type="text/javascript">
               alert("Hi"); 
               openSignUp();
            </script>                                                                               
    </c:when>
    <c:otherwise>
        <c:out value="${SPRING_SECURITY_LAST_EXCEPTION.message}" />                                             
    </c:otherwise>                                      
</c:choose>                     
<c:remove var = "SPRING_SECURITY_LAST_EXCEPTION" scope = "session" />   

<script>
   function openSignUp(){
         $('#signUp_dialog').dialog({
            width:350,
            open: function(event, ui) {
            $(".ui-button-text").remove();
            $(".ui-dialog-title").css("margin-right","275px");
            }
         });                    
    }

</script>

我也尝试过跟踪,直接将代码放在JSTL的脚本标记内的JS函数中。仍然没有运气。

<c:set var = "error" value="${SPRING_SECURITY_LAST_EXCEPTION.message}"/>
<c:choose>                  
    <c:when test="${error=='not unregistered'}"> 
        <script type="text/javascript"  src="<c:url value="/resources/scripts/jquery-ui-1.11.4/external/jquery/jquery.js" />">
        $(document).ready(function() {  
            $('#signUp_dialog').dialog({

                width:350,
                open: function(event, ui) {
                    alert("hi");
                    $(".ui-button-text").remove();
                $(".ui-dialog-title").css("margin-right","275px");
                }
             });    
        });     
        </script>                                                                               
    </c:when>
    <c:otherwise>
        <c:out value="${SPRING_SECURITY_LAST_EXCEPTION.message}" />                                             
    </c:otherwise>                                      
</c:choose>                     
<c:remove var = "SPRING_SECURITY_LAST_EXCEPTION" scope = "session" />   

请帮帮我。感谢。

2 个答案:

答案 0 :(得分:0)

您的javascript代码(无论是普通的java脚本还是jquery)应该在页面加载时触发(在完成所有java / jsp / jstl处理之后)。因此,在JSP页面末尾的脚本块中调用openSignUp(在处理完所有元素之后)。

...JSP page
<script>
//openSignUp definition here

//check the condition first
if(${error} == 'not unregistered'})//this should translate to either true or false
{
  openSignUp();//if the conditon is true, call the dialog
}
</script>

答案 1 :(得分:0)

您是否导入了jquery相关文件? 还要在加载页面后检查查看源。