ПРЕИМУЩЕСТВА - Как обновить <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 в простые символы, моя интеграция почти завершена, я пропускаю только кнопку обновления для изображения капчи