如何显示数据的子字符串

时间:2013-05-17 20:36:27

标签: spring

我是使用Spring的新手,我花了几个小时在网上搜索,但我找不到可靠的答案。

使用spring 2.0,我有一个bean,其值由我的数据库表中的一列定义。但现在我只希望它在列中显示一部分数据。

原始数据如下所示:xxxxx.xxx 我只希望字符串的第一部分(在句号之前)出现在我的网页上。

我已经研究过delimitedlinetokenizer和项目处理器,但我不觉得我走在正确的道路上。任何指针都将非常感激

这是我目前定义的bean的方式:

<bean id="date" class= "ColumnDefinitionImpl">
 <property name="column" ref="lastdate"/>
 <property name="path" ref="MY_Data_Col"/>
</bean>

1 个答案:

答案 0 :(得分:1)

正如Dave指出的那样,您可以使用Java从原始数据中获取所需的值,例如:

String originalData = //logic to get the entire value from your DB
String desiredValue = originalData;  //If the original data does not contain "." then, the whole word is used. 
                                     //You can change it as you want
if(originalData != null){
  int index = originalData.indexOf(".");
  if(index != -1){
    desiredValue = originalData.substring(0,index);
  }

}

在此代码中,desiredValue变量将包含您需要的数据 我希望这就是你想要的 编辑
根据您的评论,我认为您可以将此逻辑放入bean属性的设置器中:

private String dataWithoutDot;
//Getter here
//...
//Setter:
public void setDataWithoutDot(String originalData){
  if(originalData != null){
     int index = originalData.indexOf(".");
     if(index != -1){
       dataWithoutDot = originalData.substring(0,index);
     }
  }
}

编辑:根据您的评论,因为您无法访问ColumnDefinitionImpl代码修改 我不知道这是否是最佳解决方案,但至少它应该有效:

<bean id="myFactoryBean"
  class="path.to.a.package.CustomDataFactory">
  <property name="path" ref="MY_Data_Col"/>
</bean>

您定义了一个新的工厂类:

public class CustomDataFactory{
  private String path;
  //getter and setter
  //...
  //Our factory method:
  public String parseDataFromDB(){
    if(path != null){
      int index = path.indexOf(".");
      if(index != -1){
       return path.substring(0,index);
      }          
    }
    return path;
  }
}

然后,bach到你的spring上下文文件:

<bean id="date" class= "ColumnDefinitionImpl">
  <property name="column" ref="lastdate"/>
  <property name="path">
    <bean factory-bean="myFactoryBean" factory-method="parseDataFromDB">
  </property>
</bean>