我有一个数据表,我想在构建表的数组中将每行的id设置为当前项(具有id字段的对象)的id.
例:
<h:dataTable
value="#{bean.list}"
var="item">
<h:column>
<h:outputText id="#{item.id}" .... />
</h:column>
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为我得到:javax.servlet.ServletException: Empty id attribute is not allowed
.
由于JSF如何构建其id,或者我做错了什么,是不可能以这种方式设置id?
我一直在使用ui:repeat来生成表格.使用ui:重复它很容易得到使用的编号行varStatus
.我在调用辅助bean来处理列表导航时依赖于varStatus中的行id,例如在列表中向上或向下移动项目.
现在我想创建一个复合组件,构建一个可自定义的表,其中包含标记行,上/下移动等所需的所有功能.为此,ui:repeat将无法正常工作,因为我看不到任何方法处理不同数量的列; 我需要在一个地方指定标题,在另一个地方指定正文(我还没有达到可以创建自定义组件的知识点).因此,我继续使用数据表,因为使用这意味着将标题指定为与正文内容相同位置的构面.
这很有效,直到我注意到由于某种原因没有varStatus
了.我已经花了很多工作来处理列表演示而不需要a datamodel
,我不想开始使用它.有没有什么方法可以获得当前行号,因为它显示在表中,而不使用datamodel
?
我也正在使用viewScope,如果我理解正确,这意味着我无法将dataTable绑定到bean.
我想在另一个模板中使用Facelets模板.目前我有一个"基础"模板,到目前为止,我已经完成了所有页面.它有一个顶部和一个内容区域.
顶部有徽标,菜单,登录/注销功能,而内容区域则显示内容.
现在我需要做另一个页面(保存用户个人资料信息),我想在左边有一个菜单,并在右边显示结果.该页面应插入基本模板内容区域.
是否可以创建一个定义这两个区域(profile_left和profile_content)的新模板,并以某种方式仍然使用基本模板?
我没有理由不能只复制基本模板中的代码并添加我想要的新"定义"(profile_left和profile_content),但我仍然想知道是否可以继续使用原始基本模板.
我偶然发现了一个意想不到的行为,至少对我而言.当使用ui:repeat时,似乎我可以从外部访问var.
代码 - 页面:
<f:metadata>
<f:event type="preRenderView" listener="#{xTest.init()}" />
</f:metadata>
<h:form id="xTestForm">
<h:panelGroup layout="block">
Track: #{trk.name}
</h:panelGroup>
<table>
<ui:repeat
value="#{xTest.trackList}"
var="trk">
<tr>
<td>#{trk.name}</td>
<td>
<p:commandLink
actionListener="#{xTest.setTrack(track)}"
value="test"
update=":xTestForm" />
</td>
</tr>
</ui:repeat>
</table>
</h:form>
Run Code Online (Sandbox Code Playgroud)
代码 - Bean
package beans;
import dao.DAOFactory;
import dao.track.TrackDAO;
import dto.Track;
import exceptions.DAOException;
import java.io.Serializable;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import util.MessageUtil;
@ManagedBean
@ViewScoped
public class xTest implements Serializable {
private DAOFactory daoFactory = Config.getInstance().getDAOFactory();
private TrackDAO trackDAO;
private …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个JavaFX应用程序,让用户选择一个文件夹,然后解析它的内容以查找MP3文件并读取它们的元数据.
虽然我发现很难让用户界面看起来很好,但我还是使用了Swing.因此,我试图在JavaFX中做同样的事情.
在最初的Swing应用程序中,我创建了一个线程,该线程开始解析用户选择的文件夹中的文件.它的工作原理如下:
同时更新标签,显示发生的事件的状态,以及反映上述两个步骤进度的进度条.第一步的进度占总进度的30%,而第二步的进度占另外70%.
我找到了如何将任务绑定到进度条的示例,但我还需要更新四个标签:状态,文件计数,文件夹数和MP3计数.
我相信我可以处理其中一个标签updateMessage
,虽然我不知道如何管理其他三个.
我很高兴看到f:ajax
现在已经建立了delay
支持.不高兴它虽然不起作用.有一个错误使它失败,似乎是因为收到指定延迟的方法需要一个数字而不是一个字符串.
无论如何,它将在版本2.2.4中修复,但我不知道如何获得该版本,或者甚至可能在它公开发布之前.
我的问题是,如果有人可以解释如何获得2.2.4版本的夜间版本,或者是否有一些解决方法.
我试图了解密码盐如何提高安全性.基本上,对于每个用户密码,生成随机字符串,添加到密码然后进行散列.当用户登录时,系统为该特定用户获取salt,将其添加到密码,哈希并与存储的哈希值进行比较.
现在.我理解这是如何产生更长的密码/哈希值.我不明白是什么阻碍了自动化功能选择用户名,只是进行了大量的登录尝试 - 例如 - 一个网站,每次都有不同的密码.对我来说,似乎盐在那种情况下没有功能?
我确信我误解了这一点,如果有人能帮我理解,我会很高兴.
我有一个泛型类"SimpleList"(摘录):
public abstract class SimpleList<T> {
protected List<T> list;
public SimpleList(List<T> list) {
this.list = list;
}
}
Run Code Online (Sandbox Code Playgroud)
另一个扩展它的类"TrackList"(摘录):
public class TrackList extends SimpleList {
public TrackList(List<XmlTrack> list) {
super(list);
}
}
Run Code Online (Sandbox Code Playgroud)
在"TrackList"中,我指定该列表用于保存"XmlTrack"类型的对象.但是,似乎无法从该列表中获取对象并访问其方法.例如,这不起作用:
list.get(0).someMethodSpecificToXmlTrack()
我不明白为什么这不起作用?"SimpleList"中的列表是否设置为仅保存"XmlTrack"?