2013-08-28 3 views
1

Я пытаюсь сделать что-то, что изменит <h:outputText> в <h:inputText> после нажатия на кнопку или ссылку. Совпадает с этим: How to build "edit" button in JSF and switch between h:outputText and h:inputText, но я бы хотел использовать PrimeFaces.изменить <h: outputText> на <h:inputText> ajax в PrimeFaces

Я думаю, что это было бы полезно: http://www.primefaces.org/showcase/ui/inplace.jsf , но я хотел бы, чтобы режим редактирования срабатывал после нажатия кнопки редактирования или гиперссылки, а не после нажатия на текст, который я хочу изменить.

Конечно после нажатия кнопки редактирования Я хотел бы, что изменения в кнопку, которая позволит мне сохранить изменения и изменения в inputText outputText

+1

Не так много, я понятия не имею, как подключить Inplace с кнопкой снаружи: <р: Inplace ид =» edit_email "editor =" true "label =" # editAccountBean.email} "> WojciechKo

ответ

2

Взгляните на этот SSCCE, он делает то, что вы хотите «принять».

TestBean.java

package com.mycompany; 

import javax.faces.application.FacesMessage; 
import javax.faces.bean.ManagedBean; 
import javax.faces.bean.ViewScoped; 
import javax.faces.context.FacesContext; 

@ManagedBean 
@ViewScoped 
public class TestBean { 

    /** 
    * Controls if the input field is available or not 
    */ 
    private boolean editable = false; 

    /** 
    * The String value you want to edit 
    */ 
    private String value = "Default value"; 

    /** 
    * Changes between the inputText and the outputText 
    */ 
    public void changeEditable() { 
     editable = !editable; 
    } 

    public String getValue() { 
     return value; 
    } 

    public boolean isEditable() { 
     return editable; 
    } 

    /** 
    * Definitely saves the value 
    */ 
    public void saveValue() { 
     FacesMessage message = new FacesMessage("Value " + value + " saved!"); 
     FacesContext.getCurrentInstance().addMessage(null, message); 
    } 

    public void setEditable(boolean editable) { 
     this.editable = editable; 
    } 

    public void setValue(String value) { 
     this.value = value; 
    } 

} 

index.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:p="http://primefaces.org/ui"> 

<h:head> 
    <title>JSF Demo</title> 
</h:head> 
<h:body> 
    <p:messages /> 
    <h:form> 
     <h:panelGroup rendered="#{!testBean.editable}"> 
      <h:outputText value="#{testBean.value}" /> 
     </h:panelGroup> 
     <h:panelGroup rendered="#{testBean.editable}"> 
      <p:inputText value="#{testBean.value}" /> 
     </h:panelGroup> 

     <p:commandButton 
      value="#{testBean.editable ? 'Confirm value' : 'Change value'}" 
      update="@form" actionListener="#{testBean.changeEditable}" /> 

     <p:commandButton value="Save value" ajax="false" 
      action="#{testBean.saveValue}" /> 
    </h:form> 

</h:body> 
</html> 
Смежные вопросы