2014-01-15 5 views
1

У меня есть управляемый боб, который называется bean1.java, который имеет булевский переменный, называемый found. Переменная говорит, был ли найден клиент или нет.jsf переменная потерянное значение

У компонента есть метод validate(), который отправляется в БД и проверяет, существует ли клиент, и устанавливает переменную в found=true, если она существует, или «false», если она не установлена.

Затем я продолжаю заполнять другие поля в своей форме. Теперь, когда я нажимаю кнопку save, это метод saving(). Этот метод должен выполнить действие, если var found является истинным и другим действием, если оно ложно.

Но проблема в том, что я проверяю переменную, которая была установлена ​​в true для метода validate(), теперь она имеет значение «false».

@ManagedBean 
    @ViewScoped //SessionScoped 
    public class AgregarPoliza implements Serializable{ 

    public boolean found=false; 


    public void validate(){ 
    // go to data base and validate if the client exist, when exist 
    // set variable true 
    found = true; // setFound(true); <--- i already try this way too 
    } 

    public void saving(){ 

    //it has two actions to do but need to know the value of found 
    System.out.println("my var found has" + found); //this system.out shows false 
    if(found ==true){ 
     //makes an action 
     } 
    else{ 
    //makes another action 
     } 


    } 

//get and set of the value found    


    } 
+1

Пожалуйста, покажите свою страницу JSF и исправьте опечатки в вашем java-коде bean. – elbuild

+0

Единственная причина, по которой 'found = false' снова возникает, когда восстанавливается компонент. Убедитесь, что компонент не уничтожается и не воссоздается, добавив некоторые записи в конструктор для компонента. – kolossus

ответ

0

Вы должны попытаться вызвать метод проверки в методе сохранения, как это.

public void validate() 
{ 

// go to data base and validate if the client exist, when exist 
// set variable true 
found = true; // setFound(true); <--- i already try this way too 
} 

public void saving(){ 
    this.validate(); 
//it has two actions to do but need to know the value of found 
System.out.println("my var found has" + found); //this system.out shows false 
if(found ==true){ 
    //makes an action 
    } 
else{ 
//makes another action 
    } 
0

я хава использовать это, и теперь это работает нормально, проверьте его, пожалуйста, теперь он не может потерял значение ...

AgregarPoliza.java 

package com.best.uibeansTest; 

import java.io.Serializable; 

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 


@ManagedBean(name = "agregarPoliza") 
@SessionScoped 
public class AgregarPoliza implements Serializable{ 

public boolean found=false; 


public void validate(){ 
// go to data base and validate if the client exist, when exist 
// set variable true 
found = true; // setFound(true); <--- i already try this way too 
} 

public String saving(){ 
    validate(); 
//it has two actions to do but need to know the value of found 
System.out.println("my var found has" + found); //this system.out shows false 
if(found ==true){ 
    //makes an action 
    } 
else{ 
//makes another action 
    } 

return "test2.xhtml" ; 
} 
//get and set of the value found    
public boolean isFound() { 
    return found; 
} 

public void setFound(boolean found) { 
    this.found = found; 
} 

//get and set of the value found    


} 

здесь я просто получить agregarPoliza, как боб я хочу показать Jsf ниже код через которые я проверяю ..

test2.xhtml 

<?xml version="1.0" encoding="UTF-8"?> 
<!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:f="http://java.sun.com/jsf/core"  
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:p="http://primefaces.org/ui" 
    xmlns:ui="http://java.sun.com/jsf/facelets"> 
    <head> 
     <title>JSF Tutorial!</title> 
    </head> 
    <h:body> 
    <h2>Result</h2> 
    <hr /> 
    <h:form> 
    <p:commandButton value="Save" ajax="false" action="#{agregarPoliza.saving}"/> 
     | 
     found value: 
     #{agregarPoliza.found} 
    </h:form> 

    </h:body> 
</html> 

при нажатии кнопки сохранения сохраняется значение true. попробуйте это.

 Смежные вопросы

  • Нет связанных вопросов^_^