我有一个List对象,它包含School.Id,School.Name和School.Address.
我需要在selectOneMenu列表框中列出所有School.Name.Java代码和相应的JSF代码将如何.
到目前为止我的工作;
<h:selectOneMenu value="#{School.listschoolName}">
<f:selectItems value="#{School.listschoolName}" />
</h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)
Java类
//And also i got the corresponding getters and setters for these
private List<School> listschool;
public void listschoolName(){
setListschool(hml.findAllSchool());
}
Run Code Online (Sandbox Code Playgroud)
该findAllSchool()方法实际上返回一个List<School>对象.
我需要在列表框中显示这些学校名称(dropdown/selectOneMenu).我怎样才能做到这一点 ?
我有一个selectOneMenu,它拥有一个州的所有城市.我已经制作了一个sql来将资金放在第一位,但我想大胆一点,以便让使用它更加明显.是否有办法加粗它或做其他事情以使第二种选择更加明显?
<h:selectOneMenu value="#{someBean.cityId}">
<f:selectItems value="#{addressBean.stateList}" />
</h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud) 有没有办法根据用户从selectOneMenu组件中选择的当前值渲染组件?我的selectOneMenu组件填充了一个由两个值组成的枚举,吸烟者和非吸烟者.如果用户选择了吸烟者,我想在其下方呈现一个复选框,让用户检查他们每天抽烟的次数10,20,30 +等.如果用户选择非吸烟者,我也希望相反的工作即复选框不会渲染/消失.
我决定在selectOneMenu中使用group selectItems在primefaces中面对问题我看到我的问题的决定如何在selectOneMenu中对selectItems进行分组但它对我没有帮助
当我使用<p:selectOneMenu>它不行,并生成这样的HTML
<div id="manageTournament:gender" class="ui-selectonemenu ui-widget ui-state-default ui-corner-all ui-helper-clearfix">
<div class="ui-helper-hidden-accessible"><select id="manageTournament:gender_input"
name="manageTournament:gender_input">
<option value="">German Cars</option>
<option value="">American Cars</option>
</select></div>
Run Code Online (Sandbox Code Playgroud)
但是当我使用<h:selectOneMenu>它时没关系
<select id="manageTournament:gender" name="manageTournament:gender" size="1">
<optgroup label="German Cars">
<option value="BMW">BMW</option>
<option value="Mercedes">Mercedes</option>
<option value="Volkswagen">Volkswagen</option>
</optgroup>
<optgroup label="American Cars">
<option value="Chrysler">Chrysler</option>
<option value="GM">GM</option>
<option value="Ford">Ford</option>
</optgroup>
</select>
Run Code Online (Sandbox Code Playgroud)
我的xhtml页面
<h:form id="manageTournament">
<f:event type="preRenderView" listener="#{adminTournamentController.setConditions(false, 1)}"/>
<p:wizard id="wizard" widgetVar="wiz" style="display: inline-block; width:600px;"
flowListener="#{adminTournamentController.onFlowProcess}" nextLabel="#{msg.next_button}" backLabel="#{msg.back_button}">
<p:tab id="competitionId" title="#{msg.add_tournament}">
<p:panel header="#{msg.info_about_tournament}">
<h:panelGrid columns="3" olumnClasses="label, value" styleClass="grid">
<p:outputLabel …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用javascript在selectOneMenu中预先选择用户所在的国家/地区.问题是当页面最初加载时,列表仍然在第一个元素上.但是,如果我单击箭头以展开列表,然后单击页面上的其他位置以使列表消失,则值是javascript设置的值.
<p:selectOneMenu styleClass="inputField selectOneMenuColored" required="true" editable="false" id="country" value="#{subscribeUser.user.countryBean}" converter="#{countriesConverter}" effect="fold">
<f:selectItems value="#{countriesConverter.countries}" var="country" itemLabel="#{country.shortName}" itemValue="#{country}" />
</p:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)
和javascript:
<script language="JavaScript" src="http://www.geoplugin.net/javascript.gp" type="text/javascript"></script>
<h:body id="whole" onload="setSelectedIndex('form:country_input',geoplugin_countryName());">
...
function setSelectedIndex(menuId, val){
var menu = document.getElementById(menuId);
var opts = menu.options;
for( j = 0; j < opts.length; j++) {
if(opts[j].value == val) {
opts[j].selected= "true";
}
}
}
Run Code Online (Sandbox Code Playgroud) 我希望将列表中的项目设置为 icefaces 中的 selectonemenu。但是当我做同样的事情时,我得到以下错误: java.lang.ClassCastException: cannot be cast to javax.faces.model.SelectItem
是一个实体类。
请帮忙。
在我的页面中,我有 selectonemenu,我注意到当我单击数据表的分页时,将调用 valueChangeListener 方法,而无需实际更改 selectonemenu 中的值或选项。
这是如何发生的以及如何防止这种情况发生,因为仅当用户更改 selectonemenu 中的值时我才需要调用 valueChangeListener 方法。
感谢并感谢任何帮助。
问候
这是我的 selectonemenu 代码
更新1
<ice:selectOneMenu value="#{list.selectedItem}"
partialSubmit="true" valueChangeListener="#{list.val}">
<f:selectItems value="#{list.selectItems}" />
</ice:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)
和豆法
public void val(ValueChangeEvent event) {
logger.info("1");
selectedValue = event.getNewValue().toString();
}
Run Code Online (Sandbox Code Playgroud)
值的添加方式如下
public void loadItems(){
selectItems.add(new SelectItem("1", "One"));
selectItems.add(new SelectItem("2", "Two"));
selectItems.add(new SelectItem("3", "Three"));
selectItems.add(new SelectItem("4", "Four"));
}
Run Code Online (Sandbox Code Playgroud)
方法调用如下
public List<SelectItem> getSelectItems() {
if (selectItems == null) {
loadItems;
}
return selectItems;
}
Run Code Online (Sandbox Code Playgroud) 我无法从SelectOneMenu中获取所选项目.我向菜单提供了一个ArrayList,并希望用户选择其中一个.我把菜单放到一个表单中,所以我有一个commandButton,我打算用它来执行选择.这个实现给了我这个错误:当我从菜单"user3"中选择时,无法将类型为java.lang.String的user3转换为类java.util.ArrayList,因此它实际上正确地执行了选择.错误指的是这一行
<h:selectOneMenu value="#{user.myUsers}"
Run Code Online (Sandbox Code Playgroud)
这是我的xhtml中生成selectOneMenu的部分.
<h:panelGrid columns="3">
<h:form>
<h:selectOneMenu value="#{user.myUsers}">
<f:selectItems value="#{user.myUsers }"/>
</h:selectOneMenu>
<h:commandButton value="#{msgs.remove_user}" action="#{user.select }" ></h:commandButton>
</h:form>
<h:outputText value="#{ user.select}"></h:outputText>
</h:panelGrid>
Run Code Online (Sandbox Code Playgroud)
这是我的UserBean:
@ManagedBean(name="user")
@SessionScoped
public class UserBean implements Serializable {
private String selected;
public ArrayList<String> getMyUsers()throws Exception
{
ArrayList<String> ret;
MySQLConnection conn = new MySQLConnection();
try{
ret = conn.getMyUsers(name);
}finally
{
conn.closeConnection();
}
return ret;
}
public String getSelect() throws Exception
{
if (this.selected==null) return this.getMyUsers().get(0);
return this.selected;
}
public void setSelect(String s)
{
this.selected = s;
} …Run Code Online (Sandbox Code Playgroud) 我正在使用Primefaces 3.3.1,并在<p:selectOneMenu>其中选择一个新值。选择新值时,将在处理值的地方调用valueChangeListener方法。像这样:
<h:form>
<p:selectOneMenu id="signature-menu" value="#{objectBuffertBean.loggedInSignature}" effect="fold" style="width: 125px;">
<p:ajax event="change" update="signature-menu"
listener="#{loginBean.changeSignature()}" />
<f:selectItems value="#{signaturesBean.signatures}" />
</p:selectOneMenu>
</h:form>
Run Code Online (Sandbox Code Playgroud)
LoginBean.java:
public void changeSignature(ValueChangeEvent e) {
if (e.getNewValue() != null) {
try {
WebDB db = new WebDB();
SessionHandler.getInstance().
getCurrentObjectBuffert().setSignature(
db.getSignatureBySignatureFromWebDb(
(String) e.getNewValue()
));
} catch (DatabaseException e1) {
e1.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,奇怪的是,当我选择一个新值时,会出现以下异常:
javax.el.MethodNotFoundException: Method changeSignature not found
Run Code Online (Sandbox Code Playgroud)
而且有效!该方法被以某种方式调用,并且正在处理新值!有谁有同样的奇怪并发症吗?
在Glassfish 4.1上使用PF 5.1,JSF 2.2.7.
我有一个简单的例子selectOneMenu:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:head>
<title>Test</title>
</h:head>
<h:body>
<h:form>
<p:selectOneMenu value="#{testBean.text}">
<p:ajax listener="#{testBean.test()}" update="outputpanel"/>
<f:selectItem itemLabel="1" itemValue="1"/>
<f:selectItem itemLabel="2" itemValue="2"/>
<f:selectItem itemLabel="3" itemValue="3"/>
</p:selectOneMenu>
<p:outputPanel id="outputpanel">
#{testBean.text}
</p:outputPanel>
</h:form>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
豆:
import java.io.Serializable;
import javax.annotation.PostConstruct;
import javax.faces.view.ViewScoped;
import javax.inject.Named;
@Named
@ViewScoped
public class TestBean implements Serializable
{
private String text;
public String getText() {
return text;
}
public void setText(String text) {
System.out.println("settext: " + …Run Code Online (Sandbox Code Playgroud) selectonemenu ×10
jsf ×8
primefaces ×4
java ×3
jsf-2 ×3
alt-key ×1
css ×1
glassfish-3 ×1
icefaces ×1
javascript ×1
netbeans ×1