Home php c# sql c c++ javascript python java go android git linux asp.net django .net node.js ios xcode cocoa iphone mysql tomcat mongodb bash objective-c scala visual-studio apache elasticsearch jar eclipse jquery ruby-on-rails ruby rubygems android-studio spring lua sqlite emacs ubuntu perl docker swift amazon-web-services svn html ajax xml java-ee maven intellij-idea rvm macos unix css ipad postgresql css3 json windows-server vue.js typescript oracle hibernate internet-explorer github tensorflow laravel symfony redis html5 google-app-engine nginx firefox sqlalchemy lucene erlang flask vim solr webview facebook zend-framework virtualenv nosql ide twitter safari flutter bundle phonegap centos Register | Login | Edit Tags | New Questions | 繁体 | 简体


7 questions online user: 35

0
votes
answers
6 views
+10

persistence.xml文件是不是在classpath

-1

所以我試圖建立使用Wildfly,JPA,Hibernate和MariaDB的使用Maven在Eclipse的adminsystem。我在WildFly管理控制檯中配置了我的數據源,一切正常。 Succesful connection picture in WildFly 現在我試圖寫入該項目與實體管理器工廠的數據庫在Eclipse。但我有此錯誤消息: Error message in Eclipse 在這裏你可以看到我的項目樹: Project treepersistence.xml文件是不是在classpath

這裏是我的POM:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>com.gyurmatag.adminsystem</groupId> 
<artifactId>adminsystem</artifactId> 
<version>1.0</version> 
<packaging>war</packaging> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <java.version>1.8</java.version> 

    <servlet.version>3.1.0</servlet.version> 
    <jsf.version>2.2.12</jsf.version> 
    <primefaces.version>5.3</primefaces.version> 

    <version.wildfly>9.0.2.Final</version.wildfly> 
    <jboss.home>${project.build.directory}/wildfly-${version.wildfly} 
    </jboss.home> 
    <server.config>standalone.xml</server.config> 

    <maven-compiler-plugin.version>3.3</maven-compiler-plugin.version> 
    <maven-dependency-plugin>2.10</maven-dependency-plugin> 
    <maven-resources-plugin.version>2.7</maven-resources-plugin.version> 
    <wildfly-maven-plugin.version>1.1.0.Alpha5</wildfly-maven-plugin.version> 
</properties> 

<dependencies> 
    <!-- Servlet --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>${servlet.version}</version> 
     <scope>provided</scope> 
    </dependency> 
    <!-- JSF --> 
    <dependency> 
     <groupId>com.sun.faces</groupId> 
     <artifactId>jsf-api</artifactId> 
     <version>${jsf.version}</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.faces</groupId> 
     <artifactId>jsf-impl</artifactId> 
     <version>${jsf.version}</version> 
     <scope>compile</scope> 
    </dependency> 
    <!-- PrimeFaces --> 
    <dependency> 
     <groupId>org.primefaces</groupId> 
     <artifactId>primefaces</artifactId> 
     <version>${primefaces.version}</version> 
    </dependency>  

    <!-- https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java- 
client --> 
    <dependency> 
     <groupId>org.mariadb.jdbc</groupId> 
     <artifactId>mariadb-java-client</artifactId> 
     <version>2.2.0</version> 
    </dependency> 

    <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>5.2.12.Final</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate.javax.persistence</groupId> 
     <artifactId>hibernate-jpa-2.1-api</artifactId> 
     <version>1.0.0.Final</version> 
    </dependency> 


    <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate- 
entitymanager --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>5.2.12.Final</version> 
    </dependency> 

</dependencies> 

<build> 
<pluginManagement> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>${maven-compiler-plugin.version}</version> 
      <configuration> 
       <source>${java.version}</source> 
       <target>${java.version}</target> 
      </configuration> 
     </plugin> 
     <!-- Unpack the distribution --> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>${maven-resources-plugin.version}</version> 
      <executions> 
       <execution> 
        <id>unpack-wildfly</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>unpack</goal> 
        </goals> 
        <configuration> 
         <artifactItems> 
          <artifactItem> 
           <groupId>org.wildfly</groupId> 
           <artifactId>wildfly-dist</artifactId> 
           <version>${version.wildfly}</version> 
           <type>zip</type> 
           <overWrite>false</overWrite> 
           <outputDirectory>${project.build.directory} 
</outputDirectory> 
          </artifactItem> 
         </artifactItems> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
     <!-- Copy server configuration --> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>${maven-resources-plugin.version}</version> 
      <executions> 
       <execution> 
        <id>copy-standalone-xml</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>copy-resources</goal> 
        </goals> 
        <configuration> 

<outputDirectory>${jboss.home}/standalone/configuration</outputDirectory> 
         <resources> 
          <resource> 
           <directory>src/main/resources</directory> 
          </resource> 
         </resources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
     <!-- Maven WildFly plugin --> 
     <plugin> 
      <groupId>org.wildfly.plugins</groupId> 
      <artifactId>wildfly-maven-plugin</artifactId> 
      <version>${wildfly-maven-plugin.version}</version> 
      <configuration> 
       <jbossHome>${jboss.home}</jbossHome> 
       <serverConfig>${server.config}</serverConfig> 
      </configuration> 
     </plugin> 
    </plugins> 
    </pluginManagement> 
</build> 

這裏是我的持久性。 XML:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 
     version="2.0"> 

      <persistence-unit name="adminsystem" transaction-type="JTA"> 
      <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 

       <jta-data-source>jboss/MariaDBDS</jta-data-source> 


       <properties> 
        <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" /> 
        <property name="hibernate.hbm2ddl.auto" value="validate" /> 
        <property name="hibernate.show_sql" value="true" /> 
        <property name="hibernate.format_sql" value="true" /> 
        <property name="hibernate.connection.release_mode" value="auto" /> 
       </properties> 
      </persistence-unit> 

這裏是我JPAUtility類:

package com.gyurmatag.adminsystem.model; 


import javax.persistence.EntityManager; 
import javax.persistence.EntityManagerFactory; 
import javax.persistence.Persistence; 


public class JPAUtility { 
private static final EntityManagerFactory emFactory; 
static { 
     emFactory = Persistence.createEntityManagerFactory("adminsystem"); 
} 
public static EntityManager getEntityManager(){ 
    return emFactory.createEntityManager(); 
} 
public static void close(){ 
    emFactory.close(); 
} 
} 

如果你想採取一個更仔細看看我的項目,你可以在這裏找到:Bitbucket repo

你能幫助我有了這個?

非常感謝! :)

+5

'persistence.xml'就是它應該被稱爲... – DN1

+0

這似乎是一個在問題中錯字... –

+0

是的。這是一個錯字。感謝您的答案! –

沙发
0
0

我懷疑你有太常見了「太多的依賴錯誤」。

更換所有你的依賴與:

<dependencies> 
    <dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-api</artifactId> 
     <version>7.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.primefaces</groupId> 
     <artifactId>primefaces</artifactId> 
     <version>${primefaces.version}</version> 
    </dependency>  
</dependencies> 

,看你怎麼去...

+0

我的代碼中存在拼寫錯誤。無論如何感謝您的答案! –

+0

您應該解決您的依賴反正 –

+1

它工作正常... –

0
votes
answers
6 views
+10

忽略蜻蜓安全約束

6

我試圖在野蠅上獲得一個演示web應用程序。 我在standalone.xml定義這個安全域忽略蜻蜓安全約束

<security-domains> 
       <security-domain name="projects" cache-type="default"> 
        <authentication> 
         <login-module code="Database" flag="required"> 
          <module-option name="dsJndiName" value="java:jboss/datasources/TestDS"/> 
          <module-option name="rolesQuery" value="SELECT role, 'Roles' FROM users WHERE username=?"/> 
          <module-option name="hashAlgorithm" value="MD5"/> 
          <module-option name="hashEncoding" value="hex"/> 
          <module-option name="principalsQuery" value="SELECT password from users WHERE username=?"/> 
         </login-module> 
        </authentication> 
        <authorization> 
         <policy-module code="Database" flag="required"> 
          <module-option name="dsJndiName" value="java:jboss/datasources/school"/> 
          <module-option name="rolesQuery" value="SELECT role, 'Roles' FROM users WHERE username=?"/> 
          <module-option name="hashAlgorithm" value="MD5"/> 
          <module-option name="hashEncoding" value="hex"/> 
          <module-option name="principalsQuery" value="SELECT password from users WHERE username=?"/> 
         </policy-module> 
        </authorization> 
       </security-domain> 

那麼WEB-INF下,我已經在web.xml

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> 

    <security-constraint> 
    <web-resource-collection> 
     <web-resource-name>projects</web-resource-name> 
     <url-pattern>/twp/projects/*</url-pattern> 
     <http-method>POST</http-method> 
     <http-method>GET</http-method> 
     <http-method>PUT</http-method> 
     <http-method>DELETE</http-method> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>ADMINISTRATOR</role-name> 
    </auth-constraint> 
    </security-constraint> 

    <login-config> 
    <auth-method>FORM</auth-method> 
    <realm-name>projects</realm-name> 
    <form-login-config> 
     <form-login-page>/login.xhtml</form-login-page> 
     <form-error-page>/error.xhtml</form-error-page> 
    </form-login-config> 
    </login-config> 
    <security-role> 
    <role-name>ADMINISTRATOR</role-name> 
    </security-role> 
    <security-role> 
    <role-name>USER</role-name> 
    </security-role> 
</web-app> 

定義此安全costraints並在jboss-此內容web.xml中

<?xml version="1.0" encoding="UTF-8"?> 
<jboss-web> 
    <security-domain>java:/jaas/projects</security-domain> 

</jboss-web> 

的問題是,如果我去/項目URL我不是重定向到登錄頁面,如果約束被忽略了。

+0

你已經保護了'/ twp/projects/*'而不是'/ projects' ... –

+0

我試過了,但它不工作 – Sindico

沙发
0
9

隨着你的配置,它工作正常。在控制檯你這是兩行?:

WARN [io.undertow.servlet] (ServerService Thread Pool -- 7) UT015020: Path /twp/projects/* is secured for some HTTP methods, however it is not secured for [TRACE, HEAD, CONNECT, OPTIONS] 
INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 7) WFLYUT0021: Registered web context: '/test-1.0-SNAPSHOT' for server 'default-server' 

如果沒有,你應該把你的配置到corrent部分中的standalone.xml wildfly

首先意味着該路徑被固定和第二個告訴你重複的Web上下文。

http://localhost:8080/test-1.0-SNAPSHOT/twp/projects下的每個網址都將被保護並重定向到登錄頁面。

例如

http://localhost:8080/test-1.0-SNAPSHOT/twp/projects/all

但不

http://localhost:8080/test-1.0-SNAPSHOT/twp/all

我以urn wildfly 11使用:JBoss的:域:安全性:2.0和不鞘翅。

0
votes
answers
4 views
+10

如何在Eclipse中啓動Java EE 6項目

9

我最近幾年(連同其他語言)在完成Java SE之後開始學習Java EE 6。我買了不同的關於Maven,EJB,JSF,Glassfish等的書(儘管如此還沒有讀完),我感到完全不知道做項目的複雜性。如何在Eclipse中啓動Java EE 6項目

如何在eclipse中從「scratch」(不從本書中的示例複製)中啓動項目?我可以選擇Dynamic Web項目,Maven項目,EJB項目,EAR應用程序等。如果我想創建一個內部具有EJB/JPA和JSF的應用程序(Web應用程序),應該使用哪一個?

我知道標準Maven目錄佈局和原型,但是我不知道要選擇這種方法。當然,我知道有很多方法可以做到這一點,這取決於我將如何使用它,但是我正在學習Java EE 6,所以我想至少了解如何將基本項目設置爲好。

我也很受POM文件的淹沒。如何才能知道我需要哪些依賴關係才能開始使用Web應用程序?或者這是否包含在正確的原型中(如果我找到了)?

我使用Glassfish作爲應用服務器,Eclipse,EJB,JPA和JSF。目前只從書中的例子中學習。

+0

如果你從頭開始,要學習Java,忽略Maven的現在!沒有必要使用IDE(無論是Netbeans還是Eclipse)提供您需要的一切。當涉及到實際項目時,Maven很有趣 - 只是一個提示,以便您可以從待辦事項列表中刪除一項技術:-) – home

沙发
0
11

那麼,你的問題的完整答案几乎需要整本書本身,但這裏有一些指針。

  • 的Java EE應用程序的概念,代表任何一種使用一個或多個Java EE的API的實現,需要一個Java EE應用服務器運行Java應用程序。 Java API就是這樣的:Servlet,JSP,EJB,JPA等。這些API的實現通常由應用程序服務器提供(例如Tomcat具有servlet和JSP實現,Glassfish也具有這些以及EJB等)。假設有非應用程序服務器Java EE API實現,比如Hibernate的JPA實現。所以簡而言之,如果您在應用程序中使用其中的一些API實現並將其部署到某些應用程序服務器(如Tomcat,Glassfish,JBoss AS等)中,那麼您將擁有一個Java EE應用程序。

    • 我已經告訴你這一切,因爲在現實中,大多數的項目管理工具(比如Eclipse,Maven的,等等)使用這些細分如Web的應用程序,EJB模塊,動態Web項目等,作爲自定義面額,它建立了您的應用程序將使用的Java EE API的集合。 I.E. Web應用程序或動態Web項目將更可能使用Servlet和JSP API,EJB模塊將(使用)EJB API等。正如我所說,這些都是球場公園的教派。動態Web應用程序也可以使用EJB或JPA,它不像它寫的那麼簡單。

    • 當您使用Eclipse或Maven這些工具中的任何一個時,啓動上面提到的其中一個命名項目(例如Elcipse中的動態Web項目或Maven的標準Web應用程序),相應的工具將添加對您的模板項目的常識依賴關係(如本例中的Servlet和JSP),然後讓您從此處理它。

    • 這裏的想法是在項目開始之前使用它,然後才能理解所選工具的各種模板。就像如果您決定使用Eclipse並從動態Web項目開始一樣,您應該查看Eclipse向您詢問的內容以及執行操作時的操作(它會詢問您從本地安裝的Java EE應用程序服務器的位置將牽扯到諸如Servlet實現和JSP實現之類的依賴關係)。或者,如果你選擇Maven,並開始一個標準的Web項目,你應該檢查它通過pom.xml文件添加到項目中的依賴關係,THAT pom.xml文件的基本功能是什麼等等。你還應該檢查當你告訴它做的是這些工具如何部署應用程序,它使用Java EE服務器的一些熱點部署功能,它需要的憑據訪問該服務器第一等

我的簡短建議是從一個非常基本的例子開始:安裝Tomcat(建議使用版本7),啓動Eclipse for Java EE Development,將Tomcat安裝添加到Eclipse配置中,啓動一個使用該Tomcat作爲Application Server的Dynamic Web項目,只是做一些基本的servlet和JSP頁面,然後使用Eclipse將該sucker部署到tomcat並運行它。然後你可以分支到更高級的東西,比如用Maven做同樣的事情,將Maven項目與Eclipse集成,添加更多的Java EE東西(比如JPA Implenentation)等等。

板凳
0
1

我第一件事情就是, d問你是爲什麼你正在學習如此多的技術。如果你的目標是找到一份工作,以我的經驗來看,企業遠離Java EE並趨向於更簡單的解決方案。例如,對於大多數組織和Tomcat(或另一個Web服務器)來說,應用程序服務器是過度殺毒,它使用像Spring這樣的輔助技術和獨立的JMS服務器來替代全功能和更復雜的Java EE服務器。

我認爲在開始使用核心概念和更簡單的技術時應避免使用IDE,複雜的構建,EAR等等。相反,從一種或兩種技術開始(例如,一個hello Tomcat應用程序用一個簡單的Ant構建),並逐漸添加每種技術,因爲你找到需要。更好的是,如果你有一個真正的世界問題需要解決,即使它沒有支付。

大多數公司(至少那些有技術線索的人)寧願僱用一位程序員,他明白JSF所添加的技術的價值,以及複雜程度高於在簡歷中使用大量縮寫詞的人的複雜程度。

地板
0
0

How to start a new web app project in Eclipse with Maven?

只需鍵入 「原型:產生」,並選擇JSF + EJB/JPA(如果可用)。

這一個似乎罰款:360:遠程 - > org.jboss.weld.archetypes:焊接JSF的JEE(焊接原型用於創建使用JSF 2.0,CDI 1.0,EJB 3.1和JPA一個 Java EE 6的應用2.0 (包括持久性單元))

該Appfuse是相當完整的,可能會嵌入的東西,你永遠不會 使用,你將不得不刪除。

之後,mvn eclipse:eclipse能夠在eclipse中加載項目。

4楼
0
1

http://blogs.oracle.com/arungupta/entry/web_app_development_using_java提供瞭如何使用Eclipse和GlassFish創建Java EE 6項目的完整說明。

另外,您還可以在NetBeans中創建一個Java EE 6項目作爲解釋:

http://blogs.oracle.com/arungupta/entry/screencast_37_java_ee_6

0
votes
answers
4 views
+10

CRUD操作在多個Google日曆上(多個客戶端日曆)

0

我必須從我的Web應用程序添加/修改/刪除/事件的(患者預約)我的客戶的日曆(谷歌日曆)。有可能這樣做嗎?CRUD操作在多個Google日曆上(多個客戶端日曆)

謝謝。

沙发
0
0

應該可以

谷歌提供了可用於查看和管理使用的CalDAV協議日曆的CalDAV一個接口。

(從Google's CalDAV API documentation

0
votes
answers
3 views
+10

後臺線程

0

我正在使用Websphere Application Server創建一個典型的Web應用程序,其中UI是JSP,有一個Controller和一個會話EJB和一個數據庫。我實現了一個通知系統,作爲一個單獨的線程在後臺運行。爲此,我使用了WorkManager。後臺線程

我的問題是,我想啓動WorkManager,而不必爲每個由不同用戶啓動的每個並行會話創建會話或EJB實例。它不應該基於會話。 現在,WorkManager線程在EJB實例化時啓動,所以如果有3個連接,則有3個WorkManager實例。

單會話bean會是一個好主意嗎?或者有什麼地方可以放置一個將被調用的'main()'方法,或者類似的東西?

任何想法,將不勝感激。

沙发
0
1

我認爲有以下幾個選項:

  • 使用servlet上下文偵聽提交工作(當WAR模塊啓動,這將被調用/停止)。
  • 使用啓動Bean(WebSphere特定API),在應用程序啓動/停止時調用一次。
  • 使用引用計數方法記錄EJB實例的數量。您在創建第一個實例時提交工作(並在最後一個實例被銷燬時停止工作)。請注意,這會延遲工作的開始,直到第一次請求EJB。
  • 在WebSphere 8(支持Java EE 6)中,您可能使用單例會話bean。
0
votes
answers
2 views
+10

從WebApp啓動和停止線程

1

我編寫了解如何以及如何執行以下操作。從WebApp啓動和停止線程

我有一個用於管理的WebApp,我應該在其中添加一個按鈕(或類似的東西)來啓動和停止Java線程(此線程在數據庫上進行輪詢,發送電子郵件等)。 其目的是使用戶能夠管理這個線程的生命,決定是否保持它活着的時候,永遠活着,停止,等等....

的邏輯是:

  1. 如果你點擊「開始」,線程運行,如果還沒有一個實例在運行;
  2. 如果你點擊「停止」,停止它。

正在運行的實例必須是唯一的,以便不同的用戶(組管理員)不會啓動多個線程。

問題1.這是應該做什麼?
問題2我不明白是否有可能檢索已經運行的線程實例。
問題3.是否可以給線程一個「名稱」?

我在谷歌搜索,但沒有發現任何東西,也許是因爲我看起來不好。

非常感謝。

+0

謝謝您的建議。 是的,很多編輯... 這三個問題是相關的;但是,請你只能回答q.2嗎? 再見 – sangi 2010-07-21 00:32:04

沙发
0
0

第一個問題,我不能回答,因爲它聽起來更像是一個陳述;)

第二個是:好了,除非你放棄參考線實例(通過寫新的主題,即() .start();)您將可以在任何給定時間調用該線程實例上的方法。如果你放棄引用(你不應該),那麼你可以嘗試在當前線程的ThreadGroup中找到它(Thread.currentThread()。getThreadGroup())。

第三個問題的答案:是的,你可以命名一個線程。 線程namedThread = new Thread(「myPetThread」);

0
votes
answers
2 views
+10

模型層上的業務規則

1

在我的課程中,我需要驗證並保存movimentation的狀態。我不知道把這個驗證放在哪裏。我想我最好把它放在模型層上,而不是放在我的bean中。模型層上的業務規則

我這樣做:

1 - Movimentacao

@SuppressWarnings("serial") 
@Entity 
public class Movimentacao implements Serializable, Entidade { 

    ... 

    @Column(nullable=false) 
    @NotNull 
    @DecimalMin("0.01") 
    private BigDecimal valor; 

    @Column(nullable=false) 
    @NotNull 
    @DecimalMin("0.01") 
    private BigDecimal valorQuitado;  

    @Enumerated(EnumType.STRING) 
    @Column(nullable=false, length=1) 
    private MovimentacaoStatus status; 

    ... 

    public void setStatus(MovimentacaoStatus status) { 
     this.status = status; 
    } 

} 

2 - form.xhtml

<!-- show only on edit mode (status not null) --> 
<h:outputText id="status" value="#{movimentacaoBean.movimentacao.status.descricao}" rendered="#{movimentacaoBean.movimentacao.status ne null}" /> 

3 - MovimentacaoBean

public String salvar() throws Exception{ 

    movimentacaoService.salvar(movimentacao); 
    this.movimentacao = null; 
    this.todos = null; 

    context.addMessage(null, new FacesMessage("Movimentação salva com sucesso", "")); 
    context.getExternalContext().getFlash().setKeepMessages(true); 

    return "pretty:financeiro-lista"; 

} 

狀態不是由用戶定義的。我應該在哪裏進行驗證?在setStatus上?

如果我改變setStatus到(例如):

public void setStatus() { 
//example. The real Business rules are other. 
this.status = MovimentacaoStatus.P; 
} 

public void setStatus(MovimentacaoStatus status) { //status variable never used... 
//example. The real Business rules are other. 
this.status = MovimentacaoStatus.P; 
} 

我收到以下錯誤(因爲MovimentacaoBean沒有收到form.xhtml狀態):

原因:java.sql.SQLIntegrityConstraintViolationException:列 'status'不能爲空

如何以及在哪裏我應該放置狀態的業務規則?編輯記錄時,同樣的問題也適用。取決於「勇氣」和「valorQuitado」,狀態可能會改變。編輯模式的不同之處在於狀態屬性在form.xhtml(只讀 - outputText)上可見

+0

你應該把驗證在bean。在Movimentacao上執行保存之前。你也可以在該領域做出要求(使用枚??舉selectOneMenu是最好的選擇)。 – Milkmaid

+0

@Milkmaid也許在MovimentacaoService上更好,對不對?因爲如果我需要在JSF的其他技術上使用相同的類,則不會有耦合。 –

沙发
0
0

這取決於。我通常把它放進豆子裏。但是使用異常來檢查服務層也是有意義的。 (如果你計劃不同的前端等) 缺點可能是,如果你有很多驗證,你想給最終用戶適當的信息,它可能會更棘手一些。

因此:我會建議在兩個地方做檢查。

  • 在bean中驗證每個輸入並向最終用戶提供正確的信息。

  • 在服務中引發一般異常並在bean中捕獲它。

基本規則:

  • 確保你沒有在服務中使用的bean的東西(像面背景下,或豆類本身等)。

  • 確保在數據庫上升異常之前執行檢查。(運行)

檢查這個問題,以及:link