ПРЕИМУЩЕСТВА - Как обновить <p: graphicImage> от нажатия <p: commandButton>?

Я рассматриваю эту витрину:http://www.primefaces.org/showcase/ui/dynamicImage.jsf в частности, кейс «GraphicText на лету».

Моя проблема заключается в реализации расширенной версии этого дополнительного случая с добавлением. Когда кнопка нажата, мне нужно, чтобы изображение изменялось динамически.

В классе DynamicImageController я переписал метод получения, связанный с graphicImage:

public StreamedContent getGraphicText(){
     double random = Math.random();// a double value with a positive sign, greater than or equal to 0.0 and less than 1.0.
     if(random>0.5){
         BufferedImage bufferedImg = new BufferedImage(100, 25, BufferedImage.TYPE_INT_RGB);  
         Graphics2D g2 = bufferedImg.createGraphics();  
         g2.drawString("This is a text", 0, 10);  
         ByteArrayOutputStream os = new ByteArrayOutputStream();  
         try {
            ImageIO.write(bufferedImg, "png", os);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  
         graphicText = new DefaultStreamedContent(new ByteArrayInputStream(os.toByteArray()), "image/png");
     } else {
         BufferedImage bufferedImg = new BufferedImage(100, 25, BufferedImage.TYPE_INT_RGB);  
         Graphics2D g2 = bufferedImg.createGraphics();  
         g2.drawString("This is another text", 0, 10);  
         ByteArrayOutputStream os = new ByteArrayOutputStream();  
         try {
            ImageIO.write(bufferedImg, "png", os);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  
         graphicText = new DefaultStreamedContent(new ByteArrayInputStream(os.toByteArray()), "image/png");
     }
     return graphicText;
 }

У меня есть эта кнопка:

<p:commandButton id="refreshImageButton" value="Refresh image random">
                <p:ajax update=":idForm" />
             </p:commandButton>

и изображение:

<p:graphicImage value="#{dynamicImageController.graphicText}" />

idForm - это идентификатор формы, содержащей мой graphicImage и мою commandButton.

Мой вопрос:

Почему, если я нажимаю кнопку F5 на клавиатуре, изображение меняется случайным образом в соответствии с желаемым поведением в методе getGraphicText? И почему при нажатии на кнопку изображение не меняется?

Благодарю.

пс. Моя настоящая проблема - это интеграция jcaptcha в простые символы, моя интеграция почти завершена, я пропускаю только кнопку обновления для изображения капчи

Ответы на вопрос(2)

Ваш ответ на вопрос