JSP div自动高度对于内容来说太小

mxg2im7a  于 2022-12-07  发布在  其他
关注(0)|答案(2)|浏览(142)

我有一个情况,我有一个报告,通常显示在一个jsp中,现在我有一个打印,其中说,页面的多个示例需要被包括多次,所以这是一个组合的报告类的事情。为了避免问题,将值添加到模型与相同的键,我们想出了这种方法来包括jsp。

<c:forEach var="prodTest" items="${listProductionTest}">
<div style="display:block" id="chargeReport${prodTest.report.recId}">
</div>
<script type="text/javascript">
    $.get("ChargeReportContent?recId=${prodTest.report.recId}", function( data ) {
        $("#chargeReport${prodTest.report.recId}").html(data);
    });
</script>

ChargeReportContent是一个返回带有值的jsp的端点。它正确检索数据,但div高度全部错误,导致两个报告重叠。自动高度似乎为自己提供了足够的高度,仅包括报告的第一部分。

显示块似乎不起作用。这些报告的大小都应该在1500 px左右,但将高度作为固定值并不是一个真正的选择,因为大小可以根据报告或更新而变化。
救命啊!

flvtvl50

flvtvl501#

元素在div中的位置是什么?请确保它们不是固定的、绝对的或浮动设置的。默认情况下,div设置为显示块,您可以尝试将其设置为flex

sczxawaw

sczxawaw2#

一位同事认为这是因为html是通过编程填充的,大小不准确。我们一直没有找到一个干净的方法来解决这个问题,但我们想到的最好的方法是自己计算所需的高度,然后设置它。例如,标题总是92 px,食谱总是256 px,报告行大小= 42+(21(materials+1)),如果没有注解,则注解部分为23 px,如果有注解,则注解部分为42,依此类推。如果在JSP中,我们无法轻松检索大量警报,则我们创建一个不可见的输入来存储值,并由模型添加,如

<input id="alarmCounter${report.recId}" style="display: none" value="${alarmCount}"></input>

然后我们检索瓦尔以在计算中使用它。在我们找到总数之后,我们只需要在获取所包含的页面的get中设置它$.get(“ChargeReport?recId=${prodTest.report.recId}",function(data){

$("#chargeReport${prodTest.report.recId}").html(data);
        let alarmCount = 0;
        alarmCount =parseInt($('#alarmCounter${prodTest.report.recId}').val());
        var chartsize = 400*($('#chartExists${prodTest.report.recId}').val() == 'true' ? 1 : 0)
        var pixelsNeeded= 92 + 256 + 205
        + 42+ 21*(${fn:length(prodTest.report.reportLines)}+1)
        + 21*(alarmCount+2) 
        +19+24*${!empty prodTest.report.comment}
        + chartsize + 51 
        +50;

        $('#chargeReport${prodTest.report.recId}').css("height",pixelsNeeded+"px");

相关问题