- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用每个批处理的进度条来显示多个批处理的进度。问题是只有一个进度条被发送到服务器端(最后一个)。这是代码...
我为进度创建了一个 RequestScoped 命名 bean,因为我读到对于多个进度条,每个进度条都需要一个 bean 实例,但这并不能解决我的问题。
我正在使用 Primefaces 6.1 和 JSF 2.2。
有什么想法吗?谢谢!
<h:form id="formExecutions">
<p:dataGrid id="jobs" value="#{jobExecutorController.jobExecutions}" var="job" rows="5" paginator="true" emptyMessage="#{MessageResources['text.noRecordsFound']}"
paginatorPosition="bottom" columns="1" layout="grid">
<f:facet name="header">
#{MessageResources['text.batchProcesses']}
</f:facet>
<p:outputPanel layout="block" >
<p:panelGrid cellpadding="5" styleClass="vf-panelGrid">
<p:row style="width:100%">
<p:column>
<p:outputLabel for="executionId" value="#{MessageResources['text.executionId']}:" style="font-weight:bold"/>
</p:column>
<p:column>
<h:outputText id="executionId" value="#{job.executionId}" />
</p:column>
<p:column>
<p:outputLabel for="name" value="#{MessageResources['text.name']}:" style="font-weight:bold"/>
</p:column>
<p:column style="width:10%">
<h:outputText id="name" value="#{job.name}"/>
</p:column>
<p:column style="width:50%" rowspan="2">
<p:progressBar id="progressBar" widgetVar="progressBar" ajax="true" value="#{progressController.progress(job)}" labelTemplate="{value}%" styleClass="animated" style="height: 20px; line-height: 20px;" global="false" interval="3000">
<p:ajax event="complete" listener="#{progressController.onCompleteJob(job)}" update="messageDisplay" process="@this"/>
<p:ajax update="jobInfo"/>
</p:progressBar>
</p:column>
<p:column style="width:4%" />
<p:column rowspan="2" style="text-align:right">
<p:commandButton id="restart" onclick="PF('confirmRestartJob').show()" styleClass="coloured-icons-batch restart-image-icon blink"
disabled="#{not job.enableRestartAbandon}" immediate="true" title="">
<f:setPropertyActionListener value="#{job.executionId}" target="#{jobExecutorController.executionIdSelected}" />
<f:setPropertyActionListener value="#{job.name}" target="#{jobExecutorController.executionNameSelected}" />
</p:commandButton>
<p:tooltip for="restart" value="#{MessageResources['text.restartJobExecution']}" position="top"></p:tooltip>
<p:spacer width="10" />
<p:commandButton id="stop" onclick="PF('confirmStopJob').show()" styleClass="coloured-icons-batch stop-image-icon blink"
disabled="#{not job.enableStop}" immediate="true" title="">
<f:setPropertyActionListener value="#{job.executionId}" target="#{jobExecutorController.executionIdSelected}" />
<f:setPropertyActionListener value="#{job.name}" target="#{jobExecutorController.executionNameSelected}" />
</p:commandButton>
<p:tooltip for="stop" value="#{MessageResources['text.stopJobExecution']}" position="top"></p:tooltip>
<p:spacer width="10" />
<p:commandButton id="abandon" onclick="PF('confirmAbandonJob').show()" styleClass="coloured-icons-batch abandon-image-icon blink"
disabled="#{not job.enableRestartAbandon}" immediate="true" title="">
<f:setPropertyActionListener value="#{job.executionId}" target="#{jobExecutorController.executionIdSelected}" />
<f:setPropertyActionListener value="#{job.name}" target="#{jobExecutorController.executionNameSelected}" />
</p:commandButton>
<p:tooltip for="abandon" value="#{MessageResources['text.abandonJobExecution']}" position="top"></p:tooltip>
</p:column>
</p:row>
</p:panelGrid>
<h:panelGroup id="jobInfo" >
<p:panelGrid columns="4" cellpadding="5" styleClass="vf-panelGrid">
<p:outputLabel for="creationDate" value="#{MessageResources['text.creationDate']}:" style="font-weight:bold"/>
<h:outputText id="creationDate" value="#{job.formattedDate(job.createdDate)}" />
<p:outputLabel for="startDate" value="#{MessageResources['text.dateStartProcess']}:" style="font-weight:bold"/>
<h:outputText id="startDate" value="#{job.formattedDate(job.startedDate)}" />
<p:outputLabel for="lastUpdate" value="#{MessageResources['text.lastUpdate']}:" style="font-weight:bold"/>
<h:outputText id="lastUpdate" value="#{job.formattedDate(job.lastUpdate)}" />
<p:outputLabel for="toProcess" value="#{MessageResources['text.itemsToProcess']}:" style="font-weight:bold"/>
<h:outputText id="toProcess" value="#{job.itemsToProcess}" />
<p:outputLabel for="endDate" value="#{MessageResources['text.ended']}:" style="font-weight:bold"/>
<h:outputText id="endDate" value="#{job.formattedDate(job.endedDate)}" />
<p:outputLabel for="processed" value="#{MessageResources['text.itemsProcessed']}:" style="font-weight:bold"/>
<h:outputText id="processed" value="#{job.itemsProcessed}" />
<p:outputLabel for="status" value="#{MessageResources['text.state']}:" style="font-weight:bold"/>
<h:outputText id="status" value="#{job.status}" />
</p:panelGrid>
</h:panelGroup>
</p:outputPanel>
<p:spacer width="5"/>
<p:separator />
<p:spacer width="5"/>
</p:dataGrid>
我的 RequestScope 支持 bean...
@Named("progressController")
@RequestScoped
public class ProgressController
{
@EJB
private EJBJobRepositoryLocal ejbJobRepository;
public Long progress(DMJob jobExecution) throws VfCmsSqlException
{
if (jobExecution.getStatus().equals(BatchStatus.STARTED.name())) {
jobExecution.setProgress(ejbJobRepository.getJobProgress(jobExecution.getExecutionId()));
}
PrimeUtil.get().update("formExecutions:jobInfo");
return jobExecution.getProgress();
}
public void onCompleteJob(DMJob jobExecution)
{
Object[] parameters = {jobExecution.getName(), jobExecution.getExecutionId()};
Messages.displayInfoMessage("text.jobComplete", parameters);
}
}
最佳答案
好的。问题在于,PrimeFaces().start() 方法并未在 JSF 生成的所有组件上执行。所以,我所做的是一个 javascript 函数,该函数在页面完全加载时执行。就我而言,我需要初始化的组件是几个进度条。我的组件位于表单内的数据滚动器内,这就是我连接这些 id 的原因。 “i”是页面中每个渲染进度条的索引。
<script type="text/javascript">
$(window).load(function() {
startProgress();
});
function startProgress(){
var pid = document.getElementsByClassName('ui-progressbar');
var pidLength = pid.length;
for (var i = 0; i < pidLength; i++) {
var id = "formExecutions:scroller:".concat(i).concat(":progressBar");
PrimeFaces.getWidgetById(id).start();
}
}
</script>
仅此而已!
关于jsf - 同一组件内有多个 JSF 进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48268466/
我正在使用 suplot2grid 绘制 6 个子图,每个子图内部都有 2 个时间序列。每个子图都应在不同的 Y(垂直)轴上显示值。 我当前的输出接近我的目标,但仍然错误,如下所示: 现在我所做的事情
我想在两个斜杠之后使用带有操作的 Controller ,就好像它是操作中的操作一样。 示例:.../Administration/Institution/Register/Id 我正在使用解决方案:
在下面的查询中,我想在 CASE 的 WHEN 和 THEN 之前添加一个 AND 条件是否可行? 例如 WHEN 'r' AND table1.name="jones"THEN 'very high
在下面的查询中,我想在 CASE 的 WHEN 和 THEN 之前添加一个 AND 条件是否可行? 例如 WHEN 'r' AND table1.name="jones"THEN 'very high
我有一个标题标签,定义如下: private lazy var titleLabel: UILabel = { let label = UILabel() label.numberOfLines
我应该如何为我的以下场景实现 TableView -数据源架构: 两个 View Controller ,每个 View Controller 都包含自己的 TableView 。 表格 View 单
这一直让我发疯,从来没有找到正确的答案。 我想实现以下目标: http://juicybyte.com/stack-overflow.jpg 意思是,我想在左侧的 div 上放置一个图像,并根据内容的
我在 Firefox 正确显示切换的 div 时遇到问题。我看过其他问题,但似乎没有一个涉及同一问题。 我在两个正在切换的 div 中都有一个 wufoo 表单,这是我的代码。 $(document
我想要实现的目标非常简单。我有一个带有展开/折叠图标和问号图标的 div。当用户单击这些图标之一时,相应的隐藏 div 应向下滑动。 当用户单击展开/折叠图标而不是问号时,此功能有效。 HTML:
我有这样的东西: google Hello World 我想为所有 应用边框有一个 里面。但我不能使用 id因为此代码需要适用于任何页面,而我无法控制 ID。这可以通过 CSS
我正在尝试在各自的 docker 容器中运行 Node 和 nginx,并从 nginx 到 Node 进行代理。我首先尝试了下面的配置没有docker并且它有效。但是,当使用 docker 时,它不
使用 try-catch-finally 结构来检索数据库记录,似乎我需要在 try block 内返回一个值,以防万一一切正常(如出现异常,函数的末尾并不意味着到达)。但是如果我返回到 try 内部
我是一名优秀的程序员,十分优秀!