奇怪的jsf初始化。。。。
wula0010
2009-11-19
我的页面:
<body> <f:view> <%@include file="/baseinfo.jsp" %> <h:form> <div class="NormalSmall">用户信息</div> <h:outputText value="sno" styleClass="InnerTable"/> <h:outputText value="empno" styleClass="InnerTable"/> <h:outputText value="pasword" styleClass="InnerTable"/> <h:dataTable var="item" value="#{ErrorTestBean.userList}" rowClasses="InnerTable" border="1"> <h:column> <h:outputText value="#{item.sno}" styleClass="InnerTable"/> </h:column> <h:column> <h:outputText value="#{item.empno}" styleClass="InnerTable"/> </h:column> <h:column> <h:outputText value="#{item.password}" styleClass="InnerTable"/> </h:column> </h:dataTable><br> <h:outputText value="#{ErrorTestBean.empno}"/><h:outputText value="#{ErrorTestBean.password}"/> <br><h:commandButton type="submit" action="#{ErrorTestBean.Test}" value="test"/> </h:form> </f:view> </body> public class ErrorTestBean { private String empno; private String password; private List userList=new ArrayList(); /** Creates a new instance of ErrorTestBean */ public ErrorTestBean() throws Exception { if (!isPostBack()) { empno = "WULA0010"; password = "111"; getRequest(); getUser(); }else{ getRequest(); } } ..... public void getRequest(){ FacesContext context=FacesContext.getCurrentInstance(); HttpServletRequest request=(HttpServletRequest)context.getExternalContext().getRequest(); String str=request.getQueryString(); } public boolean isPostBack( ) { return (!FacesContext.getCurrentInstance().getRenderResponse()); } } 第一次运行页面时,页面到ErrorTestBean的构造方法里初始化变量,执行if (!isPostBack()) {..}中间的语句, 这时调用getRequest(),你会发现request是空的,里面没有值,request.setAttribute("msg", "我的信息"); 在页面: <% Object o = request.getAttribute("msg"); %> 这样在页面你也取不到值,o=null,通过页面的test按钮,调用ErrorTestBean.Test(),首先会运行ErrorTestBean的构造方法,执行 else{...}中间的方法,再调用getRequest(),你会发现request就不是空的了,request.setAttribute("msg", "我的信息"); 在页面: <% Object o = request.getAttribute("msg"); %> 这样就可以取到值了,........... 难道第一次调用不用request?那jsf用什么发起的请求?如何返回的值呢? |
|
terryzhou
2009-11-20
负责的告诉你,request不是空
[2009-11-20 10:54:13,134] DEBUG com.jstrd.oss.platform.rbac.vo.system.sysnews.SysNewsManager con ... [2009-11-20 10:54:13,138] DEBUG com.jstrd.oss.platform.rbac.vo.system.sysnews.SysNewsManager org.apache.coyote.tomcat5.CoyoteRequestFacade@176b58a [2009-11-20 10:54:13,145] DEBUG com.jstrd.oss.platform.rbac.vo.system.sysnews.SysNewsManager init ... [2009-11-20 10:54:13,153] DEBUG com.jstrd.oss.platform.rbac.vo.system.sysnews.SysNewsManager org.apache.coyote.tomcat5.CoyoteRequestFacade@176b58a Object o = request.getAttribute("msg"); 取不到值得问题,LZ你自己检查下代码,看不出你这方法写哪儿 |
|
zhanhongbo1112
2009-11-25
感觉这样使用JSF怪怪的,
|
|
scd01234
2009-12-04
LZ 建议换个思路:
一: 在BB里面添加一个成员变量: public class SomeBB { pirvate String init=""; init(){} public void getInit(){ //在这里面加载一些初始化信息 } } 在JSP 页面顶部添加几行标签: <t:saveState value="#{ProblemStatByOrgan}"></t:saveState> <t:inputHidden value="#{ProblemStatByOrgan.init}"></t:inputHidden> 上面2个标签的作用我用不用说了吧? 都是标准的T标签用法 |