برای نمایش عکس از تگ <h:graphicImage> استفاده می کنیم.
<h:graphicImage
value = "image.png"/>
در این تگ ویژگی های زیر را می توانیم تنظیم کنیم.
width : پهنای عکس
onblur : تار کردن عکس
title : عنوان عکس
- فرشته حقیقی 5 سال قبل پاسخ داد
Second Level cache بازیابی اطلاعات از دیگر session ها است.در first level cache تنها می توانیم اطلاعات را از session خودمان بازیابی کنیم اما در Second Level cache می توانیم از دیگر session ها نیز بازیابی کنیم.مکانیزم Second Level cache به این صورت می باشد که هایبرنت در هنگام واکشی اطلاعات ابتدا بررسی می کند که آیا اطلاعات مورد نیاز در این session موجود می باشد یا خیر.درصورتیکه اطلاعات دراین session نبود دیگر session ها بررسی می کند.درصورتیکه اطلاعات در دیگر session ها بود آنها را بازیابی می کند در غیر اینصورت از دیتابیس واکشی می کند.
public class HibernateEHCacheExample2 {
public static void main(String[] args) {
System.out.println("java.io.tmpdir: " + System.getProperty("java.io.tmpdir"));
// Initialize Sessions
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Statistics stats = sessionFactory.getStatistics();
Session session1 = sessionFactory.openSession();
Session session2 = sessionFactory.openSession();
Transaction transaction1 = session1.beginTransaction();
Transaction transaction2 = session2.beginTransaction();
printStats(stats);
System.out.println("--------Step 1--------");
Student student = (Student) session1.load(Student.class, 23L);
System.out.println("--------Step 2--------");
student = (Student) session2.load(Student.class, 23L);
// Release resources
transaction1.commit();
transaction2.commit();
session1.close();
session2.close();
}
- فرشته حقیقی 5 سال قبل پاسخ داد
first level cache دیتاهایی است که در session ذخیره می شوند.در هایبرنت زمانیکه دیتاهایی را از دیتابیس واکشی می کنیم این دیتاها در session قرار داده می شوند.در دفعات بعدی درصورتیکه همان دیتاها را نیاز داشته باشیم، هایبرنت به جای اینکه آنها را از دیتابیس واکشی کند از session آنها را استخراج می کند.درصورتکیه session بسته شود دیتاهای روی آن نیز از بین می رود.
در مثال زیر می خواهیم اطلاعات دانش آموز با شماره آی دی 1 استخراج کنیم.در بار اول که اینکار را انجام می دهیم اطلاعات دانش آموز از دیتابیس استخراج می شود.اما در بار دوم که اینکار را انجام می دهیم هایبرنت آن را از session بازیابی می کند.
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import com.sdnext.hibernate.tutorial.dto.Student;
public class HibernateTestDemo {
public static void main(String[] args)
{
SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
//get student with id=1
Student student = (Student) session.get(Student.class, 1);
session.getTransaction().commit();
session.close();
Session session2 = sessionFactory.openSession();
session2.beginTransaction();
//get student with id=1
Student student2 = (Student) session2.get(Student.class, 1);
session2.getTransaction().commit();
session2.close();
}
}
- فرشته حقیقی 5 سال قبل پاسخ داد
- آخرین فعالیت در 5 سال قبل
برای دسترسی به مقادیر آبجکت و آرایه و لیست از عبارت زیر استفاده می کنیم:
#{ objectname/array name/ list namme . property name}
مثلاً داریم:
<h:outputText value = "#{userData.createTime}"/>
userData نام آبجکت و createTime نام فیلد می باشد.
- فرشته حقیقی 5 سال قبل پاسخ داد
- آخرین فعالیت در 5 سال قبل
برای اضافه کردن رکورد جدید باید یک متد قرار دهیم و با استفاده از تابع add رکورد را به لیست خود اضافه کنیم.
:UserData.java
@ManagedBean(name = "userData", eager = true)
@SessionScoped
public class UserData implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private String dept;
private int age;
private double salary;
private static final ArrayList<Employee> employees
= new ArrayList<Employee>(Arrays.asList(
new Employee("John", "Marketing", 30,2000.00),
new Employee("Robert", "Marketing", 35,3000.00),
new Employee("Mark", "Sales", 25,2500.00),
new Employee("Chris", "Marketing", 33,2500.00),
new Employee("Peter", "Customer Care", 20,1500.00)
));
public ArrayList<Employee> getEmployees() {
return employees;
}
public String addEmployee() {
Employee employee = new Employee(name,dept,age,salary);
employees.add(employee);
return null;
}
public String editEmployee(Employee employee) {
employee.setCanEdit(true);
return null;
}
public String saveEmployees() {
for (Employee employee : employees) {
employee.setCanEdit(false);
}
return null;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
}
:home.xhtml
<html xmlns = "http://www.w3.org/1999/xhtml"
xmlns:h = "http://java.sun.com/jsf/html"
xmlns:f = "http://java.sun.com/jsf/core">
<h:head>
<title>JSF tutorial</title>
<h:outputStylesheet library = "css" name = "styles.css" />
</h:head>
<h:body>
<h2>DataTable Example</h2>
<h:form>
<h:dataTable value = "#{userData.employees}" var = "employee"
styleClass = "employeeTable"
headerClass = "employeeTableHeader"
rowClasses = "employeeTableOddRow,employeeTableEvenRow">
<h:column>
<f:facet name = "header">Name</f:facet>
#{employee.name}
</h:column>
<h:column>
<f:facet name = "header">Department</f:facet>
#{employee.department}
</h:column>
<h:column>
<f:facet name = "header">Age</f:facet>
#{employee.age}
</h:column>
<h:column>
<f:facet name = "header">Salary</f:facet>
#{employee.salary}
</h:column>
</h:dataTable>
<h3>Add Employee</h3>
<hr/>
<table>
<tr>
<td>Name :</td>
<td><h:inputText size = "10" value = "#{userData.name}" /></td>
</tr>
<tr>
<td>Department :</td>
<td><h:inputText size = "20" value = "#{userData.dept}" /></td>
</tr>
<tr>
<td>Age :</td>
<td><h:inputText size = "5" value = "#{userData.age}" /></td>
</tr>
<tr>
<td>Salary :</td>
<td><h:inputText size = "5" value = "#{userData.salary}" /></td>
</tr>
<tr>
<td> </td>
<td><h:commandButton value = "Add Employee"
action = "#{userData.addEmployee}" /></td>
</tr>
</table>
</h:form>
</h:body>
</html>
- فرشته حقیقی 5 سال قبل پاسخ داد
- آخرین فعالیت در 5 سال قبل
برای نمایش لیست در jsf می توانیم از تگ dataTable استفاده کنیم.این تگ لیست را درون یک جدول نمایش می دهد.
<html xmlns = "http://www.w3.org/1999/xhtml"
xmlns:h = "http://java.sun.com/jsf/html"
xmlns:f = "http://java.sun.com/jsf/core">
<h:dataTable value = "#{userData.employees}" var = "employee"
styleClass = ""
headerClass = ""
rowClasses = "">
<h:column>
<f:facet name = "header">Name</f:facet>
#{employee.name}
</h:column>
<h:column>
<f:facet name = "header">Department</f:facet>
#{employee.department}
</h:column>
<h:column>
<f:facet name = "header">Age</f:facet>
#{employee.age}
</h:column>
<h:column>
<f:facet name = "header">Salary</f:facet>
#{employee.salary}
</h:column>
</h:dataTable>
value: مقادیر لیستvar: نام لیستstyleClass: در این قسمت می توانیم کلاس css برای استایل کلی جدول مانند حاشیه و فونت مشخص کنیم.headerClass: استایل هدرهای جدولrowClasses: استایل رکوردهای جدول
- فرشته حقیقی 5 سال قبل پاسخ داد
- آخرین فعالیت در 5 سال قبل
برای پیاده سازی ولیدیشن مورد نیاز خود مراحل زیر را انجام می دهیم
1. استفاده از متد validate در اینترفیس Validator
public class UrlValidator implements Validator {
@Override
public void validate(FacesContext facesContext,
UIComponent component, String value) throws ValidatorException {
...
}
}
در متد validate ولیدیشن ای که مد نظر ما هست را پیاده سازی می کنیم.
2. با استفاده از انوتیشن FacesValidator@ یک آی دی به کلاس خود می دهیم.
@FacesValidator("com.tutorialspoint.test.UrlValidator")
public class UrlValidator implements Validator {
}
3. استفاده از ولیدیشن خود در صفحه jsf
<h:inputText id="urlInput" value="#{userData.data}" label="URL" >
<f:validator validatorId="com.tutorialspoint.test.UrlValidator" />
</h:inputText>
- فرشته حقیقی 5 سال قبل پاسخ داد
برای کنترل ورودی ها در jsf از تگهای زیر می توانیم استفاده کنیم. برای این کار نامگذاری زیر را در صفحه خود قرار می دهیم:
<html
xmlns = "http://www.w3.org/1999/xhtml"
xmlns:f = "http://java.sun.com/jsf/core">
سپس از تگهای زیر استفاده می کنیم:
1.کنترل طول ورودی:
<f:validateLength minimum = "5" maximum = "8" />
2.کنترل مقادریر ورودی عددی:
<f:validateLongRange minimum = "5" maximum = "200" />
در اینجا مقادیر ورودی باید بین 5 و 200 باشند.
3.کنترل مقادیر اعشاری:
<f:validateDoubleRange minimum = "1000.50" maximum = "10000.50" />
- فرشته حقیقی 5 سال قبل پاسخ داد
- آخرین فعالیت در 5 سال قبل
برای اینکار از متد load به صورت زیر استفاده می کنیم:
$("#div1").load("file.txt");
در مثال بالا گفتیم که در المان div1 محتوای file قرار داده شود.
درصورتیکه file یک فایل html باشد و بخواهیم که المان خاصی از آن را در صفحه خود قرار دهیم به صورت زیر عمل می کنیم:
$("#div1").load("file.txt #p1");
در مثال بالا گفتیم که المان p1 از فایل file در المان div1 از صفحه ما قرار بگیرد.
- فرشته حقیقی 5 سال قبل پاسخ داد
- آخرین فعالیت در 5 سال قبل
برای ایجاد کمبوباکس از متد ()slideToggle می توانیم استفاده کنیم.
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#flip").click(function(){
$("#panel1").slideToggle("slow");
$("#panel2").slideToggle("slow");
$("#panel3").slideToggle("slow");
});
});
</script>
<style>
#panel1,#panel2,#panel3, #flip {
padding: 5px;
text-align: center;
background-color: #e5eecc;
border: solid 1px #c3c3c3;
}
#panel1 {
padding: 50px;
display: none;
}
#panel2 {
padding: 50px;
display: none;
}
#panel3 {
padding: 50px;
display: none;
}
</style>
</head>
<body>
<div id="flip">نمایش منو</div>
<div id="panel1">آیتم1</div>
<div id="panel2">آیتم2</div>
<div id="panel3">آیتم3</div>
</body>
</html>
- فرشته حقیقی 5 سال قبل پاسخ داد
برای حذف یک المان در جی کوئری از دو متد می توانیم استفاده کنیم.
اولین متد ()remove می باشد.این متد المان و همچنین زیرالمان های آن المان را حذف می کند.
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("p").click(function(){
$(this).remove();
});
});
</script>
</head>
<body>
<p>این المان حذف شود</p>
<br>
<button>Remove div element</button>
</body>
</html>
دومین متد ()hide می باشد.
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("p").click(function(){
$(this).hide();
});
});
</script>
</head>
<body>
<p>این المان حذف شود</p>
</body>
</html>
- فرشته حقیقی 5 سال قبل پاسخ داد
برای حذف یک المان در جی کوئری از دو متد می توانیم استفاده کنیم.
اولین متد ()remove می باشد.این متد المان و همچنین زیرالمان های آن المان را حذف می کند.
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("p").click(function(){
$(this).remove();
});
});
</script>
</head>
<body>
<p>این المان حذف شود</p>
<br>
<button>Remove div element</button>
</body>
</html>
دومین متد ()hide می باشد.
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("p").click(function(){
$(this).hide();
});
});
</script>
</head>
<body>
<p>این المان حذف شود</p>
</body>
</html>
- فرشته حقیقی 5 سال قبل پاسخ داد
برای درج حاشیه رنگی از کلاسهای زیر می توانیم استفاده کنیم.
class="border border-primary"
class="border border-secondary"
class="border border-success"
class="border border-danger"
class="border border-warning"
class="border border-info"
class="border border-light"
class="border border-dark"
class="border border-white"
برای مثال فرض کنیم می خواهیم حاشیه یک عکس نوار رنگی باشد.
<img src="image.jpg" alt="Cinque Terre" width="304" height="236" class="border border-success">
- فرشته حقیقی 5 سال قبل پاسخ داد
برای فیکس کردن المان در بالای صفحه از کلاس fixed-top و پایین صفحه از کلاس fixed-bottom استفاده می کنیم.
<nav class="navbar navbar-expand-sm bg-dark navbar-dark fixed-top">
<a class="navbar-brand" href="#">React</a>
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" href="#">Bootstrap</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">HTML</a>
</li>
</ul>
</nav>
این کلاسها برای فیکس کردن همه المانها می توانند استفاده شوند و مختص نوار منو نیستند.
- فرشته حقیقی 5 سال قبل پاسخ داد
برای هایلایت کردن از کلاس d-inline bg-success استفاده می کنیم. کلمه success رنگ هایلایت را مشخص می کند.همچنین می توانیم سایز هایلایت را با کلمات sm و md و lg به صورت زیر مشخص کنیم
<div class="d-inline bg-success">boottstrap</div>
<div class="d-sm-inline bg-danger">small</div>
<div class="d-md-inline bg-warning">medium</div>
<div class="d-lg-inline bg-secondary">larrg</div>
<div class="d-lg-inline bg-dark">larrg</div>
<div class="d-lg-inline bg-info">larrg</div>
<div class="d-lg-inline bg-primary">larrg</div>
- فرشته حقیقی 5 سال قبل پاسخ داد
برای نمایش لیست در struts می توانیم از تگ لیب struts-layout.tld استفاده کنیم
<%@ taglib uri=".../struts-layout.tld" prefix="layout"%>
بعد از اینکه تگ لیب را import کردیم برای نمایش لیست از تگ <layout:collection> بصورت زیر استفاده می کنیم
<layout:collection name="accessCardRequestList" styleClass="FORM">
<layout:collectionItem title="card.requestNo" property="requestNo" />
<layout:collectionItem title="card.accountNo" property="accountNo"/>
<layout:collectionItem title="card.requestDate" property="requestDate"/>
<layout:collectionItem title="card.ownerName" property="name" />
<layout:collectionItem title="card.ownerFamily" property="family" />
<layout:collectionItem title="card.branchName" property="branch.branchName" />
</layout:collection>
name : نام لیستی که می خواهیم نمایش دهیم.این لیست را باید در session قرار دهیم.
styleClass : این ویژگی رنگ و فونت ستون ها را تنظیم می کند.
title : عنوان ستونها
property : مقدار ستون در این فیلد در لیست قرار می گیرد.
- فرشته حقیقی 5 سال قبل پاسخ داد
- آخرین فعالیت در 5 سال قبل
برای درج آیکون لود از کلاس spinner-border استفاده می کنیم:
<div class="spinner-border"></div>
می توانیم با استفاده از کلاسهای زیر آیکون لود رنگی داشته باشیم:
<div class="spinner-border text-muted"></div>
<div class="spinner-border text-primary"></div>
<div class="spinner-border text-success"></div>
<div class="spinner-border text-info"></div>
<div class="spinner-border text-warning"></div>
<div class="spinner-border text-danger"></div>
<div class="spinner-border text-secondary"></div>
<div class="spinner-border text-dark"></div>
<div class="spinner-border text-light"></div>
همچنین می توانیم سایز آیکون را با استفاده از spinner-border-sm کوچکتر کنیم:
<div class="spinner-border spinner-border-sm"></div>
- فرشته حقیقی 5 سال قبل پاسخ داد
- آخرین فعالیت در 5 سال قبل
برای این کار می توانیم از متد fadeOut در جی کوئری استفاده کنیم. در این متد می توانیم زمان ناپدید شدن المان را مشخص کنیم.
<div id="message" >Hello!</div>
<div id="message" >شما به صفحه شرکت وارد شده اید</div>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script>
//When the page has loaded.
$( document ).ready(function(){
$('#message').fadeOut(5000);
});
</script>
- فرشته حقیقی 5 سال قبل پاسخ داد
- آخرین فعالیت در 5 سال قبل
برای این کار می توانیم از متد ()animate استفاده کنیم. با استفاده از این متد می توانیم کارهایی از قبیل تغییر سایز عکس ، کاهش وضوح تصویر ، تغییر فونت و غیره را انجام دهیم. مثلاً برای بزرگ کردن تصویر بصورت زیر عمل می کنیم:
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("div").animate({
height: '+=150px',
width: '+=150px'
});
});
</script>
</head>
<body>
<div >
<img src="image.png"/>
</div>
</body>
</html>
همچنین می توانیم با استفاده از hide و toggle تصویر را از صفحه برداریم:
$("div").animate({
height: 'toggle'
});
- فرشته حقیقی 5 سال قبل پاسخ داد
- آخرین فعالیت در 5 سال قبل
برای این منظور می توانیم از متد fadeIn استفاده کنیم. با استفاده از این متد می توانیم یک المان را بعد از مدت زمان مشخصی نمایش دهیم.
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#div").fadeIn(20000);
});
</script>
</head>
<body>
<div id="div" style="display:none"> <span id='close'>x</span> </div>
<div > کاربر گرامی لطفا توجه نمایید</div>
</body>
</html>
همچنین برای اینکه المان در ابتدا نمایش داده نشود باید آن را "style="display:none قرار دهیم.
- فرشته حقیقی 5 سال قبل پاسخ داد
- آخرین فعالیت در 5 سال قبل