java - 无法在Glassfish服务器的控制台上打印Date和String对象的值

标签 java ejb cdi

我有一个像这样的CDI托管Bean,它会调用以打印约会对象的Date类型属性,我首先在Date对象上调用.toString(),并且打印没有问题:

    private String[] selectedApps;
    private List<String> appStrings;
    private List<Appointment> appointments;    

    @PostConstruct
    public void init() {
        appointments = appointmentBean.getAppointments();
        appStrings = new ArrayList<>();
        appointments.forEach((n) -> {
            appStrings.add("START TIME: " + n.getStartTime().toString());
            System.out.print("APPOINTMENT TIME STRING: " + n.getStartTime().toString());
        });  
    }

    public String deleteApps() {
        if (selectedApps.length > 0) {
            appointmentBean.deleteAppointment(selectedApps);
            return "template.xhtml";
        } else {
            System.out.print("no apps selected");
            return "";
        }
    }


但是,在EJB中,我有另一个方法deleteAppointment(String[] appStrings),它试图打印从deleteApps()方法传递给它们的相同值,但它无法这样做:

    public void deleteAppointment(String[] appStrings) {
        for (int i = 0; i < appStrings.length; i++) {
            String startStr = (appStrings[i].substring(12)).trim();
            System.out.print(startStr);
        }
    }


我尝试从CDI bean打印到EJB的值的唯一区别是,我已经在字符串上调用了.substring().trim()方法,如果我不使用这些方法而只是尝试打印原始字符串,然后打印成功。 EJB方法deleteAppointments不会引发任何错误或异常,也不会向控制台提供任何类型的输出。我也一直找不到任何解决此问题的方法。

谢谢,山姆

最佳答案

您发布的appStrings[]的内容应该没有问题。检查以下代码的输出示例:

public class Main {
    public static void main(String[] args) {
        String appStrings0 = "START TIME: Tue Apr 07 17:38:00 BST 2020";
        String startStr = appStrings0.substring(12).trim();
        System.out.println(startStr);
    }
}


输出:

Tue Apr 07 17:38:00 BST 2020


您可能在使用索引时犯了一个错误。我建议您使用增强的for循环,如下所示,以避免出现此类错误。另外,请确保也像本例中一样检查nullString的长度。

public void deleteAppointment(String[] appStrings) {
    final int PREFIXLENGTH = "START TIME: ".length();
    for (String appString : appStrings) {
        if(appString != null && appString.length() > PREFIXLENGTH) {
            String startStr = appString.substring(PREFIXLENGTH).trim();
            System.out.print("String: " + appString + ", Substring: " + startStr);
        }
    }
}

关于java - 无法在Glassfish服务器的控制台上打印Date和String对象的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61139835/

相关文章:

java - 获取两个 java.util.Date 的平均值

java - 定位 Digester 中的特定属性 - Java

hibernate - 使用 EJB 注入(inject) EntityManager

cdi - 指定带有限定符的构造型不起作用?

cdi - 在使用 Quarkus 进行本地开发期间注入(inject)不同的 bean

java - GAE - 使用枚举字段和 'contains' 运算符过滤数据时 JDO 查询失败

java - 如何更改 Eclipse OSGi Framework Launcher 使用的 OSGi Launcher Jar

mysql - EJB 事务锁/Hibernate 隔离级别

java - Jboss Java EE 容器和一个 ExecutorService

java - 部署异常 : WELD-001408: Unsatisfied dependencies for type [] with qualifiers @Default