2015-05-12 2 views
0

Я использовал для разработки приложений с расширенным клиентским интерфейсом, используя Spring MVC, смешанный с jQuery и html; Однако, поскольку в настоящее время у нас нет хорошего дизайнера, я решил пойти с JSF 2.2, используя PrimeFaces 5.2, который должен дать мне профессиональный интерфейс без обычного дизайнера.Скрыть столбец данных без его рендеринга. Обработка клиентской стороны JSF

У меня есть хорошие знания о том, как использовать JSF в качестве основы для компонентов, но я обеспокоен тем, что я хочу как можно больше избежать ненужных звонков на сервер, поскольку у меня есть десятки тысяч запросов ежедневно. Таким образом, я придерживался использования jQuery с JSF и избегаю ajax-вызовов как можно больше, чтобы обновить представление, если мне не нужно полностью реструктурировать его на основе некоторых пользовательских выборов.

Вот сценарий, который я пробовал: У меня есть таблица, из которой пользователь может выбрать, чтобы скрыть/показать столбцы на основе выбора флажков для каждого столбца. Теперь, как я уже сказал, я не хочу использовать ajax для повторного просмотра представления для каждого select/unselect, и вместо этого я использовал jQuery.

После того, как я сделал свою первую черновик и попытался поиграть, как я использовал с jQuery, я обнаружил, что я наглел, чтобы перемещаться по источнику страницы с помощью firebug и строить сложный jQuery, чтобы скрыть столбцы p: dataTable.

Это нормально? Я имею в виду, когда я смотрю на код и вижу, насколько это зависит от генерации структуры Primefaces html, я чувствую себя неуверенным.

Я использую JSF неразумно, или это правда JSF?

+2

http://www.primefaces.org/showcase/ui/data/datatable/columnToggler.xhtml это то, что вам нужно? – jNick

+0

JSF имеет значительную кривую обучения. Это основанная на компонентах среда, а Spring MVC - это структура, основанная на запросах, поэтому ваш опыт с Spring MVC не полностью переносится. [BalusC написал очень полезное описание] (http://stackoverflow.com/a/4804476/201891), что отражает ваш опыт, hragheb. – DavidS

+0

«Я использовал для разработки приложений для клиентского интерфейса с использованием Spring MVC, смешанного с jQuery и html, но, поскольку у нас нет хорошего дизайнера в настоящее время, я решил использовать JSF 2.2, используя PrimeFaces 5.2, который должен дать мне профессиональный интерфейс без регулярного дизайнера ". Если это ваша главная цель, я задаюсь вопросом, является ли JSF лучшим выбором для вас. Хотя PrimeFaces предоставляет привлекательные компоненты, я бы не стал тем ключевыми критериями выбора между компонентами и структурами, основанными на запросах, особенно если у вас уже есть значительный опыт работы с запросами. – DavidS

ответ

1

Вы можете использовать все jQuery/JS, которые вы хотите, над представлениями JSF. Основная проблема заключается в том, что модель не обновляется до тех пор, пока вы не синхронизируете состояние. Для того, чтобы увидеть, что скрытие/показ колонки не так сложна, здесь у вас есть базовый полноценный работающий пример этого с помощью JQuery и его селектор стиля:

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://xmlns.jcp.org/jsf/html" 
    xmlns:f="http://xmlns.jcp.org/jsf/core" 
    xmlns:p="http://primefaces.org/ui" 
    xmlns:ui="http://java.sun.com/jsf/facelets"> 
<h:head /> 
<h:body> 
    <script> 
     function switchColumn() { 
      if ($('.style1').is(":visible")) { 
       $('.style1').fadeOut(1000); 
      } else { 
       $('.style1').fadeIn(1000); 
      } 
     } 
    </script> 
    <h:form> 
     <p:commandButton type="button" onclick="switchColumn();" 
      value="Switch" /> 
     <p:dataTable var="test" value="#{testBean.values}"> 
      <p:column styleClass="style1"> 
       #{test.id} 
      </p:column> 
      <p:column> 
       #{test.val1} 
      </p:column> 
     </p:dataTable> 
    </h:form> 
</h:body> 
</html> 
@ManagedBean 
@ViewScoped 
public class TestBean { 

    private List<TestClass> values = new ArrayList<TestClass>(); 

    public TestBean() { 
     values.addAll(Arrays.asList(new TestClass(1, "val1"), new TestClass(2, 
       "val2"))); 
    } 

    public List<TestClass> getValues() { 
     return values; 
    } 

    public class TestClass { 

     private Integer id; 

     private String val1; 

     public TestClass(Integer id, String val1) { 
      this.id = id; 
      this.val1 = val1; 
     } 

     public Integer getId() { 
      return id; 
     } 

     public String getVal1() { 
      return val1; 
     } 

    } 

} 

Надо сказать, JSF является предназначенный для управления содержимым запроса и обновлениями модели для вас. Является не таким легким, как SpringMVC в этих терминах, поскольку вы не можете выбрать, что отправить (не полностью). Поэтому, если вы беспокоитесь о выполнении запросов/ответов, возможно, вам стоит пойти с другими фреймворками.

Смотрите также:

+0

Кажется, я выбрал жесткий путь, когда вместо классов выбирал элементы ids, чтобы выбирать элементы. Спасибо. –

Смежные вопросы