~
不是JAVA区冷清 而是用JSF的人少
没太看懂你的意思 为什么一定要传参数呢?你是想知道那个按钮是在现实里的哪一天被点击了?那你可以在action执行的方法里获得当前日期就行了啊?还是说你是做了个日历想知道人家点的是日历里的哪一天?
不是JAVA区冷清 而是用JSF的人少
没太看懂你的意思 为什么一定要传参数呢?你是想知道那个按钮是在现实里的哪一天被点击了?那你可以在action执行的方法里获得当前日期就行了啊?还是说你是做了个日历想知道人家点的是日历里的哪一天?
方法二:绑定到某个javaBean的某个属性上。
<h:commandLink XXXXXXXXXXX>
<f:param name="XXXXX" value="#{list.XXXXX}" />
</h:commandLink>
传就行啊
不是JAVA区冷清 而是用JSF的人少
没太看懂你的意思 为什么一定要传参数呢?你是想知道那个按钮是在现实里的哪一天被点击了?那你可以在action执行的方法里获得当前日期就行了啊?还是说你是做了个日历想知道人家点的是日历里的哪一天?对!我做了一个日历,想知道人家点了日历里面的哪一天!
HttpServletRequest request = (HttpServletRequest) FacesContext
.getCurrentInstance().getExternalContext().getRequest();
String XXXXX = request.getParameter("XXXXX");
接就行了
<form>
<input name="xxx" value="xxx"></form>
While post the form.
Then you can get the "xxx" by the way Win_angel give you.httpServletRequest request = (HttpServletRequest) FacesContext
.getCurrentInstance().getExternalContext().getRequest();
String XXXXX = request.getParameter("XXXXX"); 方法二:绑定到某个javaBean的某个属性上。
<form>
<input name="xxx" value="#{user.date}"></form>"xxx" 是你定义的选择日期的那个元素。userBean可以用你现成的,也可以自己新建 一个。
<h:commandLink XXXXXXXXXXX>
<f:param name="XXXXX" value="#{list.XXXXX}" />
</h:commandLink>
既然是迭代出来的那"#{list.XXXXX}" 肯定没次都不一样 这不用你管的
你只要在h:commandLink出发的action方法里用
HttpServletRequest request = (HttpServletRequest) FacesContext
.getCurrentInstance().getExternalContext().getRequest();
String XXXXX = request.getParameter("XXXXX");
接就行了
或者通过actionListener也能得到 假设你list当中存数据的bean叫browseBean
public void morsListener(ActionEvent e) {
UIData table = (UIData) e.getComponent().findComponent("你的t:dataTable的id");
browseBean b = (browseBean ) table.getRowData();
下面用b.get方法取你想要的对象就行了
}
然后在页面上通过t:dataTable或t:dataList或ui:repeat 迭代出来 每一行都是一个bean 而我之前所说的h:commandLink也包含在迭代行里 所以迭代出来的日期后都会跟个h:commandLink 用f:param把你想要的值传过去就行 然后在h:commandLink触发的方法里接就行了 上面都写了 看下好了 当然你也可以采用actionListener 通过UIData获得你想要的数据 把所有的逻辑在actionListener进行处理 而action只做跳转动作
到达页面之前你的数据应该已经在dayList封装好了里面都是你的数据Bean 假设叫dateBean里面的日期属性叫day
那页面代码如下:
<h:form>
<t:dataTable value="#{date.dayList}" var="list">
<t:column>
<f:facet name="header">
<h:outputText value="日期"/>
</f:facet>
<h:commandLink action="#{date.do}">
<h:outputText value="#{list.day}" />
<f:param name="day" value="#{list.day}"/>
</h:commandLink>
</t:column>
</t:dataTable>
</h:form>在date的do方法里用
HttpServletRequest request = (HttpServletRequest)FacesContext
.getCurrentInstance().getExternalContext().getRequest();
String day= request.getParameter("day");
接就行了 还有就是如果不是用的facelets 而是普通JSF写法的JSP页面那前面要加上
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t" %> 如果用的facelets那要<html xmlns:t="http://myfaces.apache.org/tomahawk"> 当然还有配置t标签 感觉你用的应该不是facelets 那就按普通JSF的写法好了
one里封装的都是星期一 two里封装的都是星期二......
那页面大概形如下面这样:
<h:form>
<t:dataTable value="#{date.dayList}" var="list">
<t:column>
<f:facet name="header">
<h:outputText value="周一"/>
</f:facet>
<h:commandLink action="#{date.do}">
<h:outputText value="#{list.one}" />
<f:param name="day" value="#{list.one}"/>
</h:commandLink>
</t:column>
<t:column>
<f:facet name="header">
<h:outputText value="周二"/>
</f:facet>
<h:commandLink action="#{date.do}">
<h:outputText value="#{list.two}" />
<f:param name="day" value="#{list.two}"/>
</h:commandLink>
</t:column>
......
......
</t:dataTable>
</h:form>