facelets - Adding message to faceContext is not working in Java EE7 run on glassFish? -
facelets - Adding message to faceContext is not working in Java EE7 run on glassFish? -
i doing tutorial on java ee7 comes glassfish installation. available here. code nowadays in glassfish server installation directory
/glassfish_installation/glassfish4/docs/javaee-tutorial/examples/cdi/guessnumber-cdi
.
the code works fine is. displays correct!
when user correctly guesses number not display failed
@ end of game. introduced, 1 minor alter display failed
message. have added comments right above relevant alter in code.
somehow, alter did not help. is, @ end of game, failed
message not displayed. game works usual. know why did not work , how right it?
thanks
public class usernumberbean implements serializable { private static final long serialversionuid = -7698506329160109476l; private int number; private integer usernumber; private int minimum; private int remainingguesses; @inject @maxnumber private int maxnumber; private int maximum; @inject @random instance<integer> randomint; public usernumberbean() { } public int getnumber() { homecoming number; } public void setusernumber(integer user_number) { usernumber = user_number; } public integer getusernumber() { homecoming usernumber; } public int getmaximum() { homecoming (this.maximum); } public void setmaximum(int maximum) { this.maximum = maximum; } public int getminimum() { homecoming (this.minimum); } public void setminimum(int minimum) { this.minimum = minimum; } public int getremainingguesses() { homecoming remainingguesses; } public string check() throws interruptedexception { if (usernumber > number) { maximum = usernumber - 1; } if (usernumber < number) { minimum = usernumber + 1; } if (usernumber == number) { facescontext.getcurrentinstance().addmessage(null, new facesmessage("correct!")); } //if remainingguesses less or equal zero, display failed message //----------------------------------------------- if (remainingguesses-- <= 0) { facescontext.getcurrentinstance().addmessage(null, new facesmessage("failed ")); } homecoming null; } @postconstruct public void reset() { this.minimum = 0; this.usernumber = 0; this.remainingguesses = 10; this.maximum = maxnumber; this.number = randomint.get(); } public void validatenumberrange(facescontext context, uicomponent tovalidate, object value) { int input = (integer) value; if (input < minimum || input > maximum) { ((uiinput) tovalidate).setvalid(false); facesmessage message = new facesmessage("invalid guess"); context.addmessage(tovalidate.getclientid(context), message); } } }
adding facesmessage working, problem using postdecrement in condition.
postdecrement, name suggests, decremented after execution of statement containing postdecrement.
that means, if write:
if (remainingguesses-- <= 0) {
the var remainingguesses
decremented after if-condition evaluated.
in case, when lastly guess checked, remainingguesses
1 , hence if-condition not true
, message not added.
different obvious solutions:
if (remainingguesses-- <= 1) { facescontext.getcurrentinstance().addmessage(null, new facesmessage("failed ")); }
or
if (--remainingguesses <= 0) { facescontext.getcurrentinstance().addmessage(null, new facesmessage("failed ")); }
or
remainingguesses--; if (remainingguesses <= 0) { facescontext.getcurrentinstance().addmessage(null, new facesmessage("failed ")); }
see also:
is there difference between x++ , ++x in java? difference between i++ , ++i in loop? glassfish facelets managed-bean java-ee-7 facescontext
Comments
Post a Comment