【问题标题】:Converting textarea with delimited content to list of entities将带有分隔内容的文本区域转换为实体列表
【发布时间】:2013-04-01 22:37:12
【问题描述】:

到目前为止,我有一个简单的文本区域,可以在其中复制/粘贴分隔文本(使用逗号)。 每条线代表一个新的日志(在本例中为 GPS 日志)。

例如:

1,15:26:38,5103.5889,400.8531,5
2,15:26:40,5103.5864,400.8449,6
3,15:26:43,5103.5815,400.8335,10
4,15:26:44,5103.5771,400.8259,12
5,15:26:48,5103.5688,400.8123,15
6,15:26:50,5103.5659,400.7946,22
7,15:26:52,5103.5513,400.7545,36

所以你在这里:名字、时间、纬度、经度、速度

现在我正在使用一个简单的程序代码,如下所示:

List<GeoCoordinate> coordinates = new ArrayList<GeoCoordinate>();
        for (String line : gpsDump.split("\\n")){
            List<String> items = Arrays.asList(line.split("\\s*,\\s*"));
            GeoCoordinate c = new GeoCoordinate();
            Date date = null;
            try {
                date = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").parse(items.get(1));
            } catch (ParseException ex) {
                Logger.getLogger(GeoTrackController.class.getName()).log(Level.SEVERE, null, ex);
            }
            c.setDateTime(date);
            c.setLatitude(Float.parseFloat(items.get(2)));
            c.setLongitude(Float.parseFloat(items.get(3)));
            c.setSpeed(Integer.parseInt(items.get(4)));
            coordinates.add(c);
        }

但我想重写这段代码并使其更加面向对象。 我一开始想在我的 Entity 类的 setter 中转换这些,但当我接受基本培训时,他们不鼓励这样做。

我还阅读了有关 converters 的信息,但它似乎仅用于文本框。

那么最好的方法是什么?

【问题讨论】:

    标签: jsf textarea converter


    【解决方案1】:

    我也读过转换器,但它似乎只用于文本框。

    错了,你可以在任何实现ValueHolderUIComponent 中使用它们(注意这个接口定义了一个getter 和setter 来获取/设置转换器)。以HtmlInputTextarea为代表的&lt;h:inputTextarea&gt;也属于这一类。

    <h:inputTextarea ... converter="geoCoordinateCsvConverter" />
    

    JSF Converter 确实是在模型表示中基于 Java 对象的格式和 HTML 表示中基于字符串/字符序列的格式之间转换的正确方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 1970-01-01
      • 1970-01-01
      • 2013-02-19
      • 2020-02-01
      相关资源
      最近更新 更多