0

有没有办法直接使用jstl修改css属性?下面是我想做的

<div id="error" align="center">
  <img src='resources/warning.png'/>
  <c:if test="${not empty error}">
    <c:out value='${error}' />     //if i enter here, I want #error 'display' to be 'block'
  </c:if>
</div>

所以你可能会说,为什么不把 css 设置为 display:block,然后像这样放置 if 标签

<c:if test="${not empty error}">
    <div id="error" align="center">
      <img src='resources/warning.png'/>          
        <c:out value='${error}' />     
    </div>
</c:if>

如果我的错误的唯一来源来自控制器并在模型中传回,那会很好。但是,我也在进行 AJAX 调用,并说浏览器端有问题,我仍然需要显示错误。

所以要做到这一点,例如在我的 ajax 调用中

$.ajax({

            url:  "url",
            beforeSend: function(){
              $("body").css("cursor", "wait");
            },
            dataType:"json",
            timeout:15000,
            cache: false,
            async: false,
            success: function(data){
                document.getElementById("error").innerHTML="";
                document.getElementById("error").style.display = "none";

                        $("body").css("cursor", "default");
            },
            error: function(jqXHR, textStatus, errorThrown){
                if (textStatus =="timeout"){
                    document.getElementById("error").innerHTML="Request timed out!";
                }
                else{
                    document.getElementById("error").innerHTML= jqXHR.responseText; 
                }
          document.getElementById("error").style.display = "block";
        //      $("#loading").fadeOut('medium');
                $("body").css("cursor", "default");
            }

        }); 
4

2 回答 2

1
<div id="error" align="center" <c:if test="${empty error}">style="display: none;"</c:if>>
  <img src='resources/warning.png'/>
  <c:if test="${not empty error}">
    <c:out value='${error}' />
  </c:if>
</div>

或者

<div id="error" align="center" style="display: ${(empty error) ? 'none': 'block'};">
  <img src='resources/warning.png'/>
  <c:if test="${not empty error}">
    <c:out value='${error}' />
  </c:if>
</div>

应该做你想做的。

于 2013-03-14T22:02:07.463 回答
1

我是这样做的

<div id="error" align="center">
  <img src='resources/critical.png'/>
  <span id="errorText">
    <c:out value='${error}' />
  </span>
</div>

所以现在显示属性只适用于包含 div 'error'

我的 jsp 在“errorText”字段中设置文本 如果发现错误,我的 ajax javascript 也会这样做。

然后,在我的 javascript 中,它会检查 'errorText' 中是否有任何内容,并适当地设置它的显示

$.ajax({
          //url:  "./test.go?station="+stName+"&date="+rDate,
            url:  "./getAssignments.go?station="+stName+"&date="+rDate,
            beforeSend: function(){
        //    $("#loading").fadeIn('medium');
              $("body").css("cursor", "wait");
            },
            dataType:"json",
            timeout:15000,
            cache: false,
            async: false,
            success: function(data){

                document.getElementById("errorText").innerHTML="";
                document.getElementById("error").style.display = "none";
                pucksJSON=data;
                reconstructGates( pucksJSON ); 
                setStationName(stationName); 
                refresh_time = new Date();  //reset the time counter
            //  $("#loading").fadeOut('medium');
                $("body").css("cursor", "default");
            },
            error: function(jqXHR, textStatus, errorThrown){
              refresh_time = new Date();  //reset the time counter
                if (textStatus =="timeout"){
                    document.getElementById("errorText").innerHTML="Request timed out!";
                }
                else{

                    document.getElementById("errorText").innerHTML= jqXHR.responseText;
                    setStationName(stationName); 
                    reconstructGates( null ); 
                }
          document.getElementById("error").style.display = "block";
        //      $("#loading").fadeOut('medium');
                $("body").css("cursor", "default");
            }

        }); 

这只有效,因为我将控制器设置为在设置错误时返回错误的响应代码。因此 Ajax 失败并转到错误部分。

于 2013-03-14T22:21:19.580 回答