Nano Hash - криптовалюты, майнинг, программирование

Jsf, Ограничение количества отображаемых символов?

Я работаю над jsf-приложением. У меня есть dataTable, я использую один столбец для отображения описания Pojo.

Проблема в том, что это описание слишком длинное, и таблица данных не совсем разборчива. Есть ли способ ограничить количество символов для отображения в столбце описания этой таблицы данных, например: Description desc desc...

12.07.2012


Ответы:


1

Если вы используете JSF 2, вы можете использовать функцию of:abbreviate из проекта OmniFaces.

Поместите JAR-файл в свой WEB-INF/lib, соответствующим образом настройте пространство имен в своем XHTML-файле, например это:

<html ... xmlns:of="http://omnifaces.org/functions">

а затем вы можете использовать его для любого свойства String, например:

<h:column>
    <h:outputText value="#{of:abbreviate(someBean.myproperty, 20)}" />
</h:column>

См. демонстрацию здесь.

12.07.2012
  • Идеальное решение. Спасибо! 14.07.2012

  • 2

    Если вы получаете строку из базы данных, попробуйте использовать функцию Substring SQL для усечения данных непосредственно при получении их из базы данных.

    Если нет, вы можете попробовать решение ниже.

    Предположим, что используемый вами класс POJO (назовем его MyPOJO) содержит атрибут String с именем description. Теперь DataTable будет связан со списком или картой и т. д. этого объекта, давайте пока сделаем его "ArrayList<MyPOJO> theList".

    Что вы можете сделать, так это иметь другой атрибут в том же классе MyPOJO. Объявите, что как String descriptionTruncated и в методе получения этой строки напишите следующее:

    public String getDescriptionTruncated() {
      if (this.description == null) {
          return description;
      } else if (this.description.length() <= 20 ) {
        return description;
      } else {
        return description.substring(0,19);
      }
    }
    

    Здесь мы предполагаем, что искомая длина равна 20.

    А затем в Datatable ссылаются на вновь созданную строку следующим образом:

    <h:datatable ...  var="pojoObj">
    
    <h:column>
        <h:outputText value="#{pojoObj.descriptionTruncated}" />
    </h:column>
    

    Надеюсь, это поможет.

    13.07.2012
  • Нехорошее решение, вам не нужно усекать данные, чтобы они поместились в столбце. 13.07.2012
  • У вас есть хорошая мысль. Другим решением может быть использование функции SQL Substring для усечения данных непосредственно при получении их из базы данных. 13.07.2012
  • Также, возможно, вы ошибаетесь в концепциях MVC: модель — это данные в приложении, представление — это компонент, который показывает данные пользователям. Представление может не показывать пользователю все данные, но модель может иметь все данные. 13.07.2012
  • У @eljunior есть хороший ответ, потому что вы можете использовать одни и те же данные из модели в двух разных представлениях: первое представление показывает усеченные данные, а второе - все данные. Помните: в представлении должна быть логика отображения данных. 13.07.2012
  • Спасибо за разъяснения. 13.07.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..