Java 如何在JSP中迭代对象以获得百分比?
我正在从事servlet和jsp项目。我正在将一个对象从servlet传递到JSP。目前我正在迭代该对象,并在表中显示它们- 下面是我在jsp中的代码-Java 如何在JSP中迭代对象以获得百分比?,java,html,jsp,servlets,percentage,Java,Html,Jsp,Servlets,Percentage,我正在从事servlet和jsp项目。我正在将一个对象从servlet传递到JSP。目前我正在迭代该对象,并在表中显示它们- 下面是我在jsp中的代码- <TABLE id="tableSMS" BORDER="1" CELLPADDING="3" CELLSPACING="1" style="text-align: center;"> <TR style="color:#ffffff;background-color:#787878;"> <
<TABLE id="tableSMS" BORDER="1" CELLPADDING="3" CELLSPACING="1" style="text-align: center;">
<TR style="color:#ffffff;background-color:#787878;">
<TH>Hash Name</TH>
<TH>Database Name</TH>
<TH>Version</TH>
</TR>
<c:forEach var="i" begin="0" end="${reportCount.getHash().size() - 1}">
<TR>
<TD>
${reportCount.getHash().get(i)}
</TD>
<TD>
${reportCount.getDatabaseName().get(i)}
</TD>
<TD>
${reportCount.getVersion().get(i)}
</TD>
</TR>
</c:forEach>
我想我应该在上面的新表中再次迭代reportCount
对象,并在这里提取百分比,但不确定我该怎么做?有人能举个例子吗
更新:-
这是我的bean代码-
public class Response {
private List<String> hash = new LinkedList<String>();
private List<String> databaseName = new LinkedList<String>();
private List<String> version = new LinkedList<String>();
// getters and setters here
}
公共类响应{
私有列表哈希=新的LinkedList();
私有列表数据库名=新的LinkedList();
私有列表版本=新建LinkedList();
//这里有接球手和接球手
}
有三件事如下:
${requestScope.reportCounts.hash[loop.index]}
${reportCount}
${requestScope.reportCounts.version[loop.index]}
${(oracleDBCount/fn:length(requestScope.reportCounts))*100}%
根据我的经验,在JSP页面上进行数字运算会使其很快无法读取。此外,您将来可能会遇到其他要求,例如:
- 文本匹配(您是否保证值始终为“oracle”?或者它是否可以成为“oracle”或“oracle”
- 如果有零个报告呢?那么您需要一个if条件来防止被零除
- 如果您的客户说“我们有更多的报表服务器,如MS、Postgres……您能显示其中的百分比吗?”
request.getSession(true).setAttribute("oracleReports", "50%")
然后在JSP输出中
<c:out value="${sessionScope.oracleReports}"/>
用于执行操作,以下是代码
阅读注释以理解代码
向添加id,以便我可以使用
将id附加到索引中,以便每个原始的
身份证
${reportCount.getDatabaseName().get(i)}
将Id添加到,以便我可以使用
JavaScript
%
%
调用javascript函数将值设置为原始值,我们没有这样做
有任何按钮触发我们打开一个raw并添加JavaScript调用
使脚本在每次加载页面时被触发
生的
setPercentage('${reportCount.getHash().size()-1}');
这里定义了要做什么
函数集合百分比(var索引){
对于(var i=0;i这里什么是reportCounts
?你能提供一个关于我的代码的示例吗?如果我与我的示例相关,我想这里缺少了一些东西。这是你在会话中设置的同一个变量,我在servletrequest.setAttribute(“reportCounts”,dbDetails);request.getRequestDispatcher(“/dbDetails.jsp”)的请求中设置了它.forward(request,response);
如果有任何内容丢失或不清晰,请告诉我。我不能使用此选项,因为我的哈希和databasename不是一个单一值。因此我不能这样做${reportCount.hash}
。我有什么办法可以根据我的例子来做这项工作吗?不,我说的是-在你的例子中,你假设-在这个${reportCount.hash}
hash是一个字符串变量,对吗?在我的情况下,它不是字符串变量Check现在,我已经在答案部分更新了上面的代码。请让我知道它是如何运行的。
<c:out value="${sessionScope.oracleReports}"/>
<c:forEach var="i" begin="0" end="${reportCount.getHash().size() - 1}">
<TD id="databaseName<c:out value='${i}' />">
${reportCount.getDatabaseName().get(i)}
</TD>
<tr>
<td id="oraclePercentage">%</td>
<td id="mySQLPercentage">%</td>
</tr>
<TR><TD><Script>setPercentage('${reportCount.getHash().size() - 1}');</script><TD><TR>
<Script>
function setPercentage(var index){
for(var i=0; i<index;i++){
var documentType=document.getElementById("databaseName"+i).innerHTML;
var oracleCount=0;
var mySQLCount=0;
if(vardocumentType=='Oracle')
oracleCount+=(Number)1;
else if(vardocumentType=='MySQL')
mySQLCount+=(Number)1;
document.getElementById("oraclePercentage").innerHTML=(oracleCount/index)*100;
document.getElementById("mySQLPercentage").innerHTML=(mySQLCount/index)*100;
}
</script>