2011-09-27 54 views
2

部分呈现表单字段输入值I有一个编辑产品形式,其为预填充来自DB的值。用户可以更改一个或多个值并将表单发回。一个输入字段称为T:,豆不会更新与t的值inputFileUpload是一个Ajax请求之后仅呈现,如果用户选择来改变产物通过保存按钮image.During编辑形式的最终回发:inputFileUpload字段形式.The相关部分低于:JSF 2.0,不更新在bean

<h:form>  
       <tr> 
        <td>Product Image*:</td> 
        <td> 
         <h:graphicImage url="#{addItem.prodFileName}" width="100" height="100"/> 
         <br /><h:commandLink value="change image" > 
          <f:ajax render="uploadimage" execute="@this" listener="#{addItem.ChangeImage}"/> 
         </h:commandLink> 
        </td> 
       </tr> 

       <tr > 
        <td> 
         <h:panelGroup id="uploadimage"> 
          <t:inputFileUpload rendered="#{addItem.editImgChange}" label="editImage" value="#{addItem.uploadedFile}" /> 
           <h:messages for="prodimage"/> 
          <h:inputHidden id="hiddeneditimgchange" value="#{addItem.editImgChange}" /> 
         </h:panelGroup> 
        </td> 
       </tr> 
     <h:commandButton value="save" action="#{addItem.EditItem}" /> 
</h:form> 

如addItem bean是请求范围及其代码的相关部分是:

@ManagedBean 
    public class AddItem extends AbstractBean{ 
     boolean editImgChange; 
     private UploadedFile uploadedFile; 

     //.. 
     //getters and setters 

     public void ChangeImage(){ 
       this.editImgChange=true; 
      } 

     public String EditItem() { 
      //some logic 
     } 
    } 

我看过他们的一些回答几个类似的问题我试图制作bean ViewScoped,但它破坏了我预先填充表单值的初始逻辑。由于我对RequestScoped感到满意,如果它的关闭正在影响t:inputFileUpload的更新,我已经保存了editImgChange标志的状态。当我查看bean的属性都很好时,该标志是true,但uploadedFile属性为null。

+0

您具体是如何保存'editImgChange'标志的状态? – BalusC

+0

使用上面窗体中panelGroup内部的inputhidden标签。 – maya

+0

这个价值究竟又是如何约束?通过“绑定”或“值”? – BalusC

回答

2

按照意见中,您使用<h:inputHidden value="#{addItem.editImgChange}" />保存状态。这是行不通的。 rendered属性在应用请求值阶段期间被评估,而该隐藏值在更新模型值阶段期间可用,因此太迟了。

既然你已经使用战斧,使用<t:saveState value="#{addItem.editImgChange}" />代替。或者,解决在制作bean视图时遇到的问题。我不认为这会是一个问题。也许你正在使用@PostConstruct并期望它在每个请求中被调用。您应该使用<f:event type="preRenderView">来代替。

+0

t:saveState帮助。谢谢。关于视图范围,我会弄清楚发生了什么问题。我没有使用@PostConstruct。 – maya

+0

不客气。 – BalusC