Het verschil tussen waarde en bindende

Wat is het verschil tussen de waarde en de binding met JavaServer Faces, en wanneer gebruikt u, in tegenstelling tot de andere? Om het duidelijker wat mijn vraag is, een paar eenvoudige voorbeelden worden hier gegeven.

Normaal met de JSF in de HTML code die u zou gebruiken “waarde”, zoals hier:

<h:form> 
  <h:inputText value="#{hello.inputText}"/>
  <h:commandButton value="Click Me!" action="#{hello.action}"/>
  <h:outputText value="#{hello.outputText}"/>
</h:form>

Dan de boon is:

//Imports
@ManagedBean(name="hello")
@RequestScoped
public class Hello implements Serializable {

private String inputText;
private String outputText;

public void setInputText(String inputText) {
    this.inputText = inputText;
}

public String getInputText() {
    return inputText;
}

//Other getters and setters etc.

//Other methods etc.

public String action() {

    //Do other things

    return "success";
}
}

Echter, bij het gebruik van “binding”, de XHTML-code is:

<h:form> 
  <h:inputText binding="#{backing_hello.inputText}"/>
  <h:commandButton value="Click Me!" action="#{backing_hello.action}"/>
  <h:outputText value="Hello!" binding="#{backing_hello.outputText}"/>
</h:form>

en de correspondibg bean is wel een backing bean, en is hier:

//Imports
@ManagedBean(name="backing_hello")
@RequestScoped
public class Hello implements Serializable {

private HtmlInputText inputText;
private HtmlOutputText outputText;

public void setInputText(HtmlInputText inputText) {
    this.inputText = inputText;
}

public HtmlInputText getInputText() {
    return inputText;
}

//Other getters and setters etc.

//Other methods etc.

public String action() {

    //Do other things

    return "success";
}
}

Wat praktische verschillen zijn er tussen de twee systemen, en wanneer gebruikt u een backing bean in plaats van een reguliere bean? Is het mogelijk beide te gebruiken?

Ik zijn verward over deze voor een bepaalde tijd, en zou het meest waarderen dat dit opgehelderd.

InformationsquelleAutor csharp | 2012-12-03

 

2 Replies
  1. 42

    value kenmerk vertegenwoordigt de waarde van het onderdeel. Het is de tekst dat zie je in uw tekstvak als u de pagina opent in een browser.

    binding attribuut wordt gebruikt voor het binden van uw onderdeel om een boon vastgoed. Voor een voorbeeld in de code van uw inputText onderdeel is gebonden aan de boon als deze.

    #{backing_hello.inputText}`

    Dit betekent dat u kunt toegang krijgen tot de hele component en al haar eigenschappen in uw code als een UIComponent object. U kunt dat doen veel werken met de component want nu is het beschikbaar in de java-code.
    Voor een voorbeeld kunt u de stijl als deze.

    public HtmlInputText getInputText() {
        inputText.setStyle("color:red");
        return inputText;
    }

    Of gewoon voor het uitschakelen van de component volgens een boon eigendom

    if(someBoolean) {
      inputText.setDisabled(true);
    }

    en zo verder….

    • OK, hartelijk dank voor uw antwoord. Dus in andere woorden, bindend is veel krachtiger dan het krijgen van de waarde, als je het hele component. Echter, wanneer in de JSF Herstellen Bekijken…. Render Respons cyclus is bindend weergegeven, vergeleken met de waarde?
    • Als ik het goed begrepen hebben uw vraag goed het antwoord is ‘Ja’. Als u het laden van uw pagina, getters van de onderdelen die zijn gebonden aan de bonen worden genoemd en dus onderdelen zijn hersteld.
  2. 3

    Soms hebben we niet echt nodig om de waarde van UIComponent om een boon vastgoed. Bijvoorbeeld, je zou nodig hebben om toegang te krijgen tot de UIComponent en werken zonder toepassing van de waarde van de model woning. In dergelijke gevallen is het goed om het gebruik van een backing bean in plaats van een gewone boon. Aan de andere kant in sommige situaties is het nodig om te werken met de waarden van de UIComponent zonder enige noodzaak van het programmatische toegang tot hen. In dit geval kunt u gewoon met de reguliere bonen.

    Dus, de regel is dat het gebruik van een backing bean alleen wanneer u het nodig programmatische toegang tot de componenten verklaard in de weergave. In andere gevallen gebruik maken van de reguliere bonen.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *