是什么区别action和actionListener,什么时候应该使用action与actionListener?
在我的JSF视图中p:selectCheckboxMenu,我想要通过AJAX对所选值执行某些业务逻辑.
对于一个简单的change事件,它工作正常,但对于一个toggleSelect事件没有.在我的监听器方法中,我正在检索旧的选择,但我期待这里的新选择.
请参阅以下示例:
@ViewScoped
@Named
public class RequestBean implements Serializable {
private List<String> list; // + getter/setter
@PostConstruct
private void init() {
list = new ArrayList<String>() {{
add("one"); add("two"); add("three");
}};
}
public void listener() {
System.out.println("Current content of \"list\":");
for(String s : list) {
System.out.println(s);
}
}
}
Run Code Online (Sandbox Code Playgroud)
在JSF视图中:
<p:selectCheckboxMenu value="#{requestBean.list}" label="List">
<f:selectItem itemValue="one" itemLabel="one"/>
<f:selectItem itemValue="two" itemLabel="two"/>
<f:selectItem itemValue="three" itemLabel="three"/>
<p:ajax event="toggleSelect" listener="#{requestBean.listener}" />
<p:ajax event="change" listener="#{requestBean.listener}" />
</p:selectCheckboxMenu>
Run Code Online (Sandbox Code Playgroud)
现在让我们考虑以下用例:您正在进入视图,选择"一个"和"两个".如果我单击"全选"复选框,结果为:
Info: Current …Run Code Online (Sandbox Code Playgroud) 我想知道如何使用dropzone.js与JSF上传文件.在文档(http://www.dropzonejs.com/#usage)中,它说使用dropzone就像使用:
<input type="file" name="file" />
Run Code Online (Sandbox Code Playgroud)
但我不知道如何在JSF中实现服务器端部分来获取文件并将其存储在磁盘中.
在处理 JSF 自定义组件时有点卡住了。如果有人能给我一个开端,那就太好了。
这个想法是有一个组件,让我通过一个LocalDate. 想一个更简单的日期选择器。呈现的 HTML 有两个按钮,一个将日期增加一天,另一个按钮将日期减少一天。值本身存储在一个输入隐藏中。附件是组件的一个简单版本,它不起作用,但希望能描述我想要实现的目标。
这个想法是<my:datePager value="#{myBackingBean.someDate}" />在页面上说并在单击任一按钮之一后执行一些逻辑/操作。
例如<my:datePager value="#{myBackingBean.someDate} action="..." />或<my:datePager value="#{myBackingBean.someDate} previous="..." next="..."/>不知道什么更好。
这是我遇到的问题:如何调用组件上的previous和next方法?
到目前为止,这是我的 JSF 2.3 自定义组件:
@FacesComponent(LocalDatePager.COMPONENT_TYPE)
public class LocalDatePager extends UIInput {
public static final String COMPONENT_TYPE = "LocalDatePager";
public LocalDatePager() {
setConverter(LocalDateConverter.INSTANCE);
}
public void previous() {
LocalDate localDate = (LocalDate) getValue();
localDate = localDate.minusDays(1);
setValue(localDate);
}
public void next() {
LocalDate localDate = (LocalDate) getValue();
localDate = localDate.plusDays(1); …Run Code Online (Sandbox Code Playgroud)