jsf底层知识汇总 多选框

JSF多选框处理与数据删除
本文介绍如何在JSF中处理多选框的数据,包括获取选中的值并将其转换为数组进行批量操作的方法。同时展示了如何利用Hibernate进行数据库的批量删除操作。

1.对多选框取 选中的放入数组
<input type="checkbox" name="oids" value="${message.id}"/>
 public String deleteMessages() {
  String[] ids = FacesContext.getCurrentInstance().getExternalContext()
    .getRequestParameterValuesMap().get("oids");//取名字为oids

的值
  int[] oids = FacesUtils.getOids(ids);
  messageService.deleteUserMessages(oids);
  SearchConditions searchConditions = new SearchConditions();
  messageService.listChunkMessage(searchConditions);
  return "listChunkMessage";
 }
方法二
public String deleteMessages()
 {
  String ids=FacesUtils.getRequestParameter("oids");
  int[] oids=FacesUtils.getOids(ids.split(","));

  messageService.deleteUserMessages(oids);
  return listMessage();
 }
public void deleteUserMessages(int[] oids)
 {
  StringBuffer hql=new StringBuffer("delete from UserMessage where id in

(:oids)");
  Query query=this.getSession().createQuery(hql.toString());
  List list=new  ArrayList();
  for(int i:oids)
  {
   list.add(i);
  }
  query.setParameterList("oids", list);
  query.executeUpdate();
 }
补充:
FacesUtils.java的方法
 public static String getRequestParameter(String name) {
  return (String)FacesContext.getCurrentInstance().getExternalContext

().getRequestParameterMap().get(name);
 }
2遍历的学习
int[] ss
for(int i:ss)
3取当年年份

 Calendar c = Calendar.getInstance();
 int year = Calendar.getInstance().get(Calendar.YEAR);
4底层取值
((UserDAO) FacesUtils.getManagedBean("userDAO"))

 

有关FacesUtils.java代码放入csdn空间5/FacesUtils.java中

1.javascript中使用${}
${request.contextPath}/
2一个业务模块跳到另一个
SearchConditions conditions=new SearchConditions();
annualUserService.listChunkAnnualUser(conditions);//先查询再跳转
 return "listChunkAnnualUser";
3根据conditions的查询(此种方法扩展性比较高,不受查询数据的类型限制)
4.jsf中的if用rendered代替
<h:outputText rendered="#{userBean.aa!='0'}"></h:outputText>
对jsf文本框的取值

String dutyID = FacesUtils.getRequestParameter("userForm:dutyID");

错误解决:?
信息: WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.

 5.commandButton不能传param ,要用commandLink

  <h:commandLink action="#{consultProjectBean.viewConsultProject}">
               <f:param name="consultProject.ID" value="#{consultProject.ID}" />
               <h:outputText value="[查看详情]" />
              </h:commandLink>

在 JavaServer Faces (JSF) 框架中,自带的复框组件是通过 `<h:selectBooleanCheckbox>` 标签来实现的。这个组件用于创建一个单独的复框,用户可以通过勾或取消勾来进行布尔值的择。 ### 基本使用方法 以下是一个基本的示例代码,展示了如何在 JSF 页面中使用 `<h:selectBooleanCheckbox>` 组件: ```xhtml <h:form> <h:outputLabel for="subscribe" value="Subscribe to newsletter:" /> <h:selectBooleanCheckbox id="subscribe" value="#{userBean.subscribe}" /> <h:commandButton value="Submit" action="#{userBean.submit}" /> </h:form> ``` 在这个例子中: - `id="subscribe"` 是该复框的唯一标识符。 - `value="#{userBean.subscribe}"` 将复框的状态绑定到后端 Bean 的属性上,`userBean` 是一个托管 Bean,而 `subscribe` 是其布尔类型的属性。 - `<h:commandButton>` 用于提交表单,并触发相应的动作方法 `submit`。 ### 框(Multiple Selection) 如果需要让用户从项中进行,则可以使用 `<h:selectManyCheckbox>` 组件。它允许用户个值,并将这些值绑定到后端的一个集合类型(如 List 或数组)属性上。 ```xhtml <h:form> <h:outputLabel for="interests" value="Select your interests:" /> <h:selectManyCheckbox id="interests" value="#{userBean.interests}"> <f:selectItem itemValue="sports" itemLabel="Sports" /> <f:selectItem itemValue="music" itemLabel="Music" /> <f:selectItem itemValue="technology" itemLabel="Technology" /> </h:selectManyCheckbox> <h:commandButton value="Submit" action="#{userBean.submit}" /> </h:form> ``` 在这个例子中: - `<h:selectManyCheckbox>` 允许用户个兴趣项。 - `value="#{userBean.interests}"` 将中的值绑定到 `userBean` 中的一个集合属性 `interests` 上。 - `<f:selectItem>` 定义了每个可的复框项,其中 `itemValue` 是实际存储的值,`itemLabel` 是显示给用户的标签。 ### 自定义样式和行为 虽然 JSF 提供了默认的 HTML 输出,但可以通过添加自定义属性或使用 CSS 类来修改复框的外观和行为。例如,可以通过 `styleClass` 属性为复框添加 CSS 类: ```xhtml <h:selectBooleanCheckbox id="subscribe" value="#{userBean.subscribe}" styleClass="custom-checkbox" /> ``` 然后,在 CSS 文件中定义 `.custom-checkbox` 类以应用特定的样式。 此外,也可以结合 JavaScript 来增强复框的行为,比如在复框状态变化时执行某些操作: ```xhtml <h:selectBooleanCheckbox id="subscribe" value="#{userBean.subscribe}" onclick="handleSubscription(this.checked)" /> <script type="text/javascript"> function handleSubscription(isChecked) { if (isChecked) { alert("You have subscribed!"); } else { alert("You have unsubscribed."); } } </script> ``` ### 总结 JSF 框架提供了两种主要的复框组件:`<h:selectBooleanCheckbox>` 用于单个布尔值的择,而 `<h:selectManyCheckbox>` 用于场景。两者都可以通过绑定到后端 Bean 来处理用户的输入,并且支持进一步的样式和行为定制,以满足不同的需求[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值