Не работает h:commandButton в JSF

216
10 сентября 2018, 16:30

Есть обычная JSF страница с 2-мя формами:

<h:form id="form1" styleClass="formneed" enctype="multipart/form-data">
    <h:inputFile value="#{testBean.part}" >
        <f:ajax listener="#{testBean.upload}" render="form2"/>
    </h:inputFile>
</h:form>
<h:form id="form2">
        <p:imageCropper value="#{testBean.croppedImage}" image="/temp/imagecrop" boxWidth="400"
                        initialCoords="20, 20, 50, 50"/>
        <p:graphicImage id="testImage" value="#{testBean.uploadedFile}" cache="false"/>
    <h:commandButton value="crop" action="#{testBean.crop}">
    </h:commandButton>
</h:form>
<h:outputScript library="primefaces" name="jquery/jquery.js" />
<h:outputScript>
    $(document).ready(function () {
        $(".formneed").attr("action", "/resources/pages/test.xhtml");
    })
</h:outputScript>

Она управляется следующим бином:

@Named
@SessionScoped
public class TestBean implements Serializable {
public void upload(){
        try {
            byte[] temp = IOUtils.toByteArray(part.getInputStream());
            FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("cropBytes", temp);
        }catch (IOException e){
            e.printStackTrace();
        }
    }
 public String crop(){
        this.file = croppedImage.getBytes();
        return "";
    }
public StreamedContent getUploadedFile() {
    if(file == null){
        return  new DefaultStreamedContent();
    }
        InputStream is = new ByteArrayInputStream(file);
        return new DefaultStreamedContent(is, "image");
    }
}

Их задача состоит в том, чтобы загрузить картинку, затем выделить область обреза с помощью кастомного компонента p:imageCropper(Всё сделано по документации primefaces) и по нажатию кнопки должна отправиться эта область, из неё получают байты в методе crop(). Дальше p:graphicImage из этих байтов запрашивает картинку getUploadedFile().

Проблема в том, что при нажатии на эту кнопку страница обновляется, идут запросы, но картинка не изменяется, а это происходит так как метод crop() не вызывается вообще (Смотрел дебагом в intellijIDEA ), что делать?

UPDATE 1.

При переходе на данную страницу 2 GET запроса имеют статус 404, и они оба ссылаются на 1 url:

http://localhost:8080/javax.faces.resource/dynamiccontent.properties.xhtml?ln=primefaces&v=6.2&pfdrid=60028d6fb3f7b8e66e1a60dac9c71a04&pfdrt=sc&pfdrid_c=false&uid=41d73dd2-d9e4-4172-bb8f-bda344c1a629

READ ALSO
Android получение файла не из ресурсов

Android получение файла не из ресурсов

Необходимо создать Bitmap из изображения png, находящегося не в ресурсах, а просто в папке проектаНе могу понять какой путь прописывать, пробовал...

199
Не срабатывает switch-case/if-else условие. Java

Не срабатывает switch-case/if-else условие. Java

Упражняюсь в Java на CodewarsВ задачке речь идет об очереди в кинотеатр, где билет на фильм стоит 25 долларов, а у посетителей могут быть купюры в 25, 50 и 100 долларов...

186
Как в бета версии сделать отправку определенных данных разработчику?

Как в бета версии сделать отправку определенных данных разработчику?

Разместил Бета версию приложения в PlayMarketНа период тестирования в приложении будет кнопка "Отправка статистики разработчику"

198
Абстрактные классы и композиция Java

Абстрактные классы и композиция Java

Можно ли использовать композицию, когда оба класса абстрактные? Например, у меня есть абстрактный класс Тело (от него я буду создавать конусы,...

166