Обрезка изображения с помощью jCrop в Java + JSF 2.0 - PullRequest
1 голос
/ 19 сентября 2011

У меня есть страница, которая загружает изображение, и пользователь может обрезать его.Дело в том, что значения (x1, y1) и (x2, y2) равны js, и они нужны мне в моем backBean.Как я передам его в свой BackBean?

<script type="text/javascript">

    $(function(){

        $('#jcroptarget').Jcrop({

        trackDocument: true,

        onChange: showCoords,

        onSelect: showCoords,

        aspectRatio: 1

        });
    });

    function showCoords(c)
    {

        $('#x').val(c.x);

        $('#y').val(c.y);

        $('#x2').val(c.x2);

        $('#y2').val(c.y2);

        $('#w').val(c.w);

        $('#h').val(c.h);

    };

</script>

<div>
    <label>X1 <input type="text" name="x" id="x" size="4" /></label>
    <label>Y1 <input type="text" name="y" id="y" size="4" /></label>
    <label>X2 <input type="text" name="x2" id="x2" size="4" /></label>
    <label>Y2 <input type="text" name="y2" id="y2" size="4" /></label>
    <label>W <input type="text" name="w" id="w" size="4" /></label>
    <label>H <input type="text" name="h" id="h" size="4" /></label>
</div>

1 Ответ

3 голосов
/ 19 сентября 2011

Если эти входные данные имеют ту же форму, что и отправляемый компонент, вы можете получить их из карты параметров запроса:

Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
String x = params.get("x");
String y = params.get("y");
String x2 = params.get("x2");
String y2 = params.get("y2");
String w = params.get("w");
String h = params.get("h");

Или, вы можете объявить их как управляемые свойства, так что JSF установит их при построении bean-объекта области действия запроса:

@ManagedProperty("#{param.x}")
private Integer x;
@ManagedProperty("#{param.y}")
private Integer y;
@ManagedProperty("#{param.x2}")
private Integer x2;
@ManagedProperty("#{param.y2}")
private Integer y2;
@ManagedProperty("#{param.w}")
private Integer w;
@ManagedProperty("#{param.h}")
private Integer h;

Или вы можете привязать эти входные данные к свойствам бина, чтобы вам не нужно было захватывать их вручную или получать как управляемые свойства:

<label>X1 <h:inputText id="x" value="#{bean.x}" size="4" /></label>
<label>Y1 <h:inputText id="y" value="#{bean.y}" size="4" /></label>
<label>X2 <h:inputText id="x2" value="#{bean.x2}" size="4" /></label>
<label>Y2 <h:inputText id="y2" value="#{bean.y2}" size="4" /></label>
<label>W <h:inputText id="w" value="#{bean.w}" size="4" /></label>
<label>H <h:inputText id="h" value="#{bean.h}" size="4" /></label>

только с этими свойствами:

private Integer x;
private Integer y;
private Integer x2;
private Integer y2;
private Integer w;
private Integer h;

и не забудьте исправить селекторы jQuery, добавив к значению <h:form id>:

$('#formId\\:x').val(c.x);
$('#formId\\:y').val(c.y);
$('#formId\\:x2').val(c.x2);
$('#formId\\:y2').val(c.y2);
$('#formId\\:w').val(c.w);
$('#formId\\:h').val(c.h);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...