[SEAM] selectOneMenu传值到EntityQuery中进行查询

无双Rama 2009-04-07
sxlkk 写道
这个用那个EntityQuery能实现,我就是这么做的,不过首先你要会用那个myfaces里面的一个标签,xmlns:t="http://myfaces.apache.org/tomahawk",这个标签的用法在seam中和jsf中用法差不多的,http://sxlkk.iteye.com/blog/354386这里面我写的是jsf的,你看看吧,我seam中就是这么实现的多选,和全选

我这看不了blog,进不去
能贴出来吗?
sxlkk 2009-04-07
首先在页面上要使用Myfaces的一个taglib
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>
然后在页面的<f:view>内部用
<t:saveState value="#{后台Bean}"></t:saveState>
下面是datatable的写法
<h:dataTable id="dt" value="#{后台Bean.resultList}" var="aaa"

binding="#{后台Bean.table}">//这里在后台bean中要有table属性,是UIData

类型的,提供get,set方法
<h:column>
<f:facet name="header">
<h:outputText value="序号" />
</f:facet>
<center>
<h:selectBooleanCheckbox value="#{后台Bean.selectTable[后台

Bean.table.rowIndex]}" />//这里在后台bean中要有selectTable这个属性

       <h:outputText value="#{后台Bean.table.rowIndex+1}" />
</center>
</h:column>

后台bean的写法

public class 后台Bean{

private UIData table;
private boolean[] selectTable;
private List list;
@PersistenceContext
private EntityManager em;

public List getResultList(){
list = 调用ejb的方法得到list的结果
       selectTable = new boolean[list.size()];//给变量初始化是在此位置
return list;
}

public String deleteAction(){
   for(int i = 0; i < selectTable.length; i++){
if(selectTable[i]){
   em.remove(list.get(i));
}
    }
    return "success";
}
}
======================================
这只是jsf实现方法,具体到seam还有少些改动
无双Rama 2009-04-07
非常感谢 sxlkk  的帮助,我已经在seam中实现了:
页面中:
      <h:selectOneMenu value="#{str}">    
     <f:selectItem  itemValue="0" itemLabel="失效" />
     <f:selectItem  itemValue="1" itemLabel="生效" />
     <f:selectItem  itemValue="2" itemLabel="全選" />   
   </h:selectOneMenu>
<h:commandButton  value="查詢" reRender="sm1" action="#{salarymodelquery.selectMode}"/>

Query 类:
    @Out(required=false)@In(required=false)
private String str="2";

public String getStr() {
return str;
}
public void setVar(String str) {
this.str = str;
}

// * 查詢條件關聯的對象
private SalaryModel salarymodel = new SalaryModel();
// 查詢語句
//private static final String ejbql = "select Salarymodel from SalaryModel salarymodel";
   
// * 限制條件
private static final String  ejbql="select salarymodel from SalaryModel salarymodel";
private static final String[] RESTRICTIONS = {"(salarymodel.status)=#{true}"};
private static final String[] RESTRICTIONS1 = {"(salarymodel.status)=#{false}"};
private static final String[] RESTRICTIONS2 = {"#{''}"};

public SalaryModelQuery() {
this.setValues();
this.selectMode();
}


public void selectMode(){

if (str.equals("2")) {
super.setEjbql(ejbql);
super.setRestrictionExpressionStrings(Arrays.asList(RESTRICTIONS2));
}
if (str.equals("0")) {
super.setEjbql(ejbql);
super.setRestrictionExpressionStrings(Arrays.asList(RESTRICTIONS1));
}
if (str.equals("1")) {
super.setEjbql(ejbql);
super.setRestrictionExpressionStrings(Arrays.asList(RESTRICTIONS));
}
}

@DataModel(value="salmod")
@Override
public List<SalaryModel> getResultList(){
return super.getResultList();
}
经过多次调试终于可以用了,非常感谢大家的帮忙和关注  
Global site tag (gtag.js) - Google Analytics