Я работаю над приложением jsf для обрезки изображений с помощью PrimeFaces 6.2 ImageCropper.Я хотел бы отобразить размеры области обрезки (например, 500 x 500 пикселей) в виде текстового поля под изображением, и чтобы размеры текстового поля обновлялись соответствующим образом, когда пользователь перетаскивает края области.
Мой подход к достижению этого состоял в том, чтобы сначала создать поля, которые поддерживают значения измерений области обрезки в cropBean
.Затем добавьте тег valueChangeListener
в ImageCropper, чтобы вызвать метод в cropBean
для обновления измерений области обрезки.Вот небольшая часть кода, который я использую:
Часть XHTML:
<p:imageCropper value="#{cropBean.croppedImage}"
image="myImage.jpg"
initialCoords="0,0,#{cropBean.originalWidth}, #{cropBean.originalHeight}"
update=":mainContainer newDimensions"
valueChangeListener="#{cropBean.updateCropDimensions}" />
<h:outputText id="newDimensions"
value="New Dimensions: #{cropBean.cropWidth} x #{cropBean.cropHeight}"
style="font-style: italic" />
Часть CropBean:
private CroppedImage croppedImage;
private int cropWidth = 0;
private int cropHeight = 0;
public void updateCropDimensions() {
cropWidth = croppedImage.getWidth();
cropHeight = croppedImage.getHeight();
}
(я также добавил геттеры иустановщики для полей и проверили, что обрезка работает)
Однако valueChangeListener
, похоже, не вызывает метод updateCropDimensions
.Кто-нибудь знает, где я иду не так, или есть другое решение?